From d26f12ed43be592135b38473fe9b6519a6fc32fe Mon Sep 17 00:00:00 2001 From: Matthias Baesken Date: Mon, 4 Feb 2019 11:00:12 +0100 Subject: [PATCH 01/36] 8218276: AIX build fails in tieredThresholdPolicy.cpp Reviewed-by: dholmes, mdoerr --- src/hotspot/share/runtime/tieredThresholdPolicy.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hotspot/share/runtime/tieredThresholdPolicy.cpp b/src/hotspot/share/runtime/tieredThresholdPolicy.cpp index 5182d953431..66afdcff264 100644 --- a/src/hotspot/share/runtime/tieredThresholdPolicy.cpp +++ b/src/hotspot/share/runtime/tieredThresholdPolicy.cpp @@ -28,6 +28,7 @@ #include "memory/resourceArea.hpp" #include "runtime/arguments.hpp" #include "runtime/handles.inline.hpp" +#include "runtime/safepoint.hpp" #include "runtime/safepointVerifiers.hpp" #include "runtime/tieredThresholdPolicy.hpp" #include "code/scopeDesc.hpp" From 66c9e770df6d5e5a67288a3753df0003f25c0a33 Mon Sep 17 00:00:00 2001 From: Naoto Sato Date: Mon, 4 Feb 2019 10:04:04 -0800 Subject: [PATCH 02/36] 8218386: Correct the SE version in j.l.Character Reviewed-by: lancea --- src/java.base/share/classes/java/lang/Character.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java.base/share/classes/java/lang/Character.java b/src/java.base/share/classes/java/lang/Character.java index f90a964af93..dc713058615 100644 --- a/src/java.base/share/classes/java/lang/Character.java +++ b/src/java.base/share/classes/java/lang/Character.java @@ -54,7 +54,7 @@ import jdk.internal.misc.VM; * from the Unicode Consortium at * http://www.unicode.org. *

- * The Java SE 12 Platform uses character information from version 11.0 + * The Java SE 13 Platform uses character information from version 11.0 * of the Unicode Standard, plus the Japanese Era code point, * {@code U+32FF}, from the first version of the Unicode Standard * after 11.0 that assigns the code point. From 9b0b058ee7688cb8ac15fadd8c19198e1fa3c5c3 Mon Sep 17 00:00:00 2001 From: Lance Andersen Date: Mon, 4 Feb 2019 14:10:53 -0500 Subject: [PATCH 03/36] 8217393: Clarify Attributes.equals() Reviewed-by: alanb, darcy, rriggs, martin --- src/java.base/share/classes/java/util/jar/Attributes.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/java.base/share/classes/java/util/jar/Attributes.java b/src/java.base/share/classes/java/util/jar/Attributes.java index 345046d6961..69d56814824 100644 --- a/src/java.base/share/classes/java/util/jar/Attributes.java +++ b/src/java.base/share/classes/java/util/jar/Attributes.java @@ -265,9 +265,10 @@ public class Attributes implements Map, Cloneable { } /** - * Compares the specified Attributes object with this Map for equality. - * Returns true if the given object is also an instance of Attributes - * and the two Attributes objects represent the same mappings. + * Compares the specified object to the underlying + * {@linkplain Attributes#map map} for equality. + * Returns true if the given object is also a Map + * and the two maps represent the same mappings. * * @param o the Object to be compared * @return true if the specified Object is equal to this Map From f1fbd694788715532beca66b44f1afd83745e826 Mon Sep 17 00:00:00 2001 From: Robbin Ehn Date: Mon, 4 Feb 2019 21:42:47 +0100 Subject: [PATCH 04/36] 8218145: block_if_requested is not proper inlined due to size Reviewed-by: kbarrett, coleenp, gziemski --- .../share/runtime/safepointMechanism.cpp | 12 +++++++++- .../share/runtime/safepointMechanism.hpp | 2 +- .../runtime/safepointMechanism.inline.hpp | 23 +++---------------- 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/hotspot/share/runtime/safepointMechanism.cpp b/src/hotspot/share/runtime/safepointMechanism.cpp index 7ac190c9c28..5a21e514374 100644 --- a/src/hotspot/share/runtime/safepointMechanism.cpp +++ b/src/hotspot/share/runtime/safepointMechanism.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -83,6 +83,16 @@ void SafepointMechanism::default_initialize() { } } +void SafepointMechanism::block_if_requested_slow(JavaThread *thread) { + // local poll already checked, if used. + if (global_poll()) { + SafepointSynchronize::block(thread); + } + if (uses_thread_local_poll() && thread->has_handshake()) { + thread->handshake_process_by_self(); + } +} + void SafepointMechanism::initialize_header(JavaThread* thread) { disarm_local_poll(thread); } diff --git a/src/hotspot/share/runtime/safepointMechanism.hpp b/src/hotspot/share/runtime/safepointMechanism.hpp index fbc23d96afd..ad5f69fcb77 100644 --- a/src/hotspot/share/runtime/safepointMechanism.hpp +++ b/src/hotspot/share/runtime/safepointMechanism.hpp @@ -49,7 +49,7 @@ class SafepointMechanism : public AllStatic { static inline bool local_poll(Thread* thread); static inline bool global_poll(); - static inline void block_if_requested_local_poll(JavaThread *thread); + static void block_if_requested_slow(JavaThread *thread); static void default_initialize(); diff --git a/src/hotspot/share/runtime/safepointMechanism.inline.hpp b/src/hotspot/share/runtime/safepointMechanism.inline.hpp index d7418ee1807..56a70604970 100644 --- a/src/hotspot/share/runtime/safepointMechanism.inline.hpp +++ b/src/hotspot/share/runtime/safepointMechanism.inline.hpp @@ -55,28 +55,11 @@ bool SafepointMechanism::should_block(Thread* thread) { } } -void SafepointMechanism::block_if_requested_local_poll(JavaThread *thread) { - bool armed = local_poll_armed(thread); // load acquire, polling page -> op / global state - if(armed) { - // We could be armed for either a handshake operation or a safepoint - if (global_poll()) { - SafepointSynchronize::block(thread); - } - if (thread->has_handshake()) { - thread->handshake_process_by_self(); - } - } -} - void SafepointMechanism::block_if_requested(JavaThread *thread) { - if (uses_thread_local_poll()) { - block_if_requested_local_poll(thread); - } else { - // If we don't have per thread poll this could a handshake or a safepoint - if (global_poll()) { - SafepointSynchronize::block(thread); - } + if (uses_thread_local_poll() && !SafepointMechanism::local_poll_armed(thread)) { + return; } + block_if_requested_slow(thread); } void SafepointMechanism::arm_local_poll(JavaThread* thread) { From f5458c58918cdedadac86100746d7d5d4309a321 Mon Sep 17 00:00:00 2001 From: Vladimir Ivanov Date: Mon, 4 Feb 2019 17:35:35 -0800 Subject: [PATCH 05/36] 8188133: C2: Static field accesses in clinit can trigger deoptimizations Reviewed-by: kvn --- src/hotspot/share/ci/ciMethod.hpp | 9 ++++---- src/hotspot/share/opto/bytecodeInfo.cpp | 12 ++++++++--- src/hotspot/share/opto/compile.cpp | 5 +++++ src/hotspot/share/opto/compile.hpp | 2 ++ src/hotspot/share/opto/parse.hpp | 2 ++ src/hotspot/share/opto/parse3.cpp | 28 +++++++++++-------------- 6 files changed, 35 insertions(+), 23 deletions(-) diff --git a/src/hotspot/share/ci/ciMethod.hpp b/src/hotspot/share/ci/ciMethod.hpp index cd4977ad3f7..084da6bfcde 100644 --- a/src/hotspot/share/ci/ciMethod.hpp +++ b/src/hotspot/share/ci/ciMethod.hpp @@ -191,10 +191,11 @@ class ciMethod : public ciMetadata { // Code size for inlining decisions. int code_size_for_inlining(); - bool caller_sensitive() const { return get_Method()->caller_sensitive(); } - bool force_inline() const { return get_Method()->force_inline(); } - bool dont_inline() const { return get_Method()->dont_inline(); } - bool intrinsic_candidate() const { return get_Method()->intrinsic_candidate(); } + bool caller_sensitive() const { return get_Method()->caller_sensitive(); } + bool force_inline() const { return get_Method()->force_inline(); } + bool dont_inline() const { return get_Method()->dont_inline(); } + bool intrinsic_candidate() const { return get_Method()->intrinsic_candidate(); } + bool is_static_initializer() const { return get_Method()->is_static_initializer(); } int comp_level(); int highest_osr_comp_level(); diff --git a/src/hotspot/share/opto/bytecodeInfo.cpp b/src/hotspot/share/opto/bytecodeInfo.cpp index 2d6d2c271a9..c88e5502d93 100644 --- a/src/hotspot/share/opto/bytecodeInfo.cpp +++ b/src/hotspot/share/opto/bytecodeInfo.cpp @@ -204,7 +204,9 @@ bool InlineTree::should_not_inline(ciMethod *callee_method, // First check all inlining restrictions which are required for correctness if ( callee_method->is_abstract()) { fail_msg = "abstract method"; // // note: we allow ik->is_abstract() - } else if (!callee_method->holder()->is_initialized()) { + } else if (!callee_method->holder()->is_initialized() && + // access allowed in the context of static initializer + !C->is_compiling_clinit_for(callee_method->holder())) { fail_msg = "method holder not initialized"; } else if ( callee_method->is_native()) { fail_msg = "native method"; @@ -446,13 +448,17 @@ bool InlineTree::try_to_inline(ciMethod* callee_method, ciMethod* caller_method, } //------------------------------pass_initial_checks---------------------------- -bool pass_initial_checks(ciMethod* caller_method, int caller_bci, ciMethod* callee_method) { +bool InlineTree::pass_initial_checks(ciMethod* caller_method, int caller_bci, ciMethod* callee_method) { ciInstanceKlass *callee_holder = callee_method ? callee_method->holder() : NULL; // Check if a callee_method was suggested if( callee_method == NULL ) return false; // Check if klass of callee_method is loaded if( !callee_holder->is_loaded() ) return false; - if( !callee_holder->is_initialized() ) return false; + if( !callee_holder->is_initialized() && + // access allowed in the context of static initializer + !C->is_compiling_clinit_for(callee_holder)) { + return false; + } if( !UseInterpreter ) /* running Xcomp */ { // Checks that constant pool's call site has been visited // stricter than callee_holder->is_initialized() diff --git a/src/hotspot/share/opto/compile.cpp b/src/hotspot/share/opto/compile.cpp index f3a1497aea1..944e0e84cba 100644 --- a/src/hotspot/share/opto/compile.cpp +++ b/src/hotspot/share/opto/compile.cpp @@ -3820,6 +3820,11 @@ void Compile::set_allowed_deopt_reasons() { } } +bool Compile::is_compiling_clinit_for(ciKlass* k) { + ciMethod* root = method(); // the root method of compilation + return root->is_static_initializer() && root->holder() == k; // access in the context of clinit +} + #ifndef PRODUCT //------------------------------verify_graph_edges--------------------------- // Walk the Graph and verify that there is a one-to-one correspondence diff --git a/src/hotspot/share/opto/compile.hpp b/src/hotspot/share/opto/compile.hpp index 67397ccd0f8..6c6b3d70b75 100644 --- a/src/hotspot/share/opto/compile.hpp +++ b/src/hotspot/share/opto/compile.hpp @@ -1374,6 +1374,8 @@ class Compile : public Phase { // supporting clone_map CloneMap& clone_map(); void set_clone_map(Dict* d); + + bool is_compiling_clinit_for(ciKlass* k); }; #endif // SHARE_OPTO_COMPILE_HPP diff --git a/src/hotspot/share/opto/parse.hpp b/src/hotspot/share/opto/parse.hpp index 29136eea474..b868dc703c2 100644 --- a/src/hotspot/share/opto/parse.hpp +++ b/src/hotspot/share/opto/parse.hpp @@ -57,6 +57,8 @@ class InlineTree : public ResourceObj { GrowableArray _subtrees; + bool pass_initial_checks(ciMethod* caller_method, int caller_bci, ciMethod* callee_method); + void print_impl(outputStream* stj, int indent) const PRODUCT_RETURN; const char* _msg; protected: diff --git a/src/hotspot/share/opto/parse3.cpp b/src/hotspot/share/opto/parse3.cpp index 72db7643f7c..8bd0b14d552 100644 --- a/src/hotspot/share/opto/parse3.cpp +++ b/src/hotspot/share/opto/parse3.cpp @@ -55,25 +55,21 @@ bool Parse::static_field_ok_in_clinit(ciField *field, ciMethod *method) { // need to be guarded. ciInstanceKlass *field_holder = field->holder(); - bool access_OK = false; if (method->holder()->is_subclass_of(field_holder)) { - if (method->is_static()) { - if (method->name() == ciSymbol::class_initializer_name()) { - // OK to access static fields inside initializer - access_OK = true; - } - } else { - if (method->name() == ciSymbol::object_initializer_name()) { - // It's also OK to access static fields inside a constructor, - // because any thread calling the constructor must first have - // synchronized on the class by executing a '_new' bytecode. - access_OK = true; - } + if (method->is_static_initializer()) { + // OK to access static fields inside initializer + return true; + } else if (method->is_object_initializer()) { + // It's also OK to access static fields inside a constructor, + // because any thread calling the constructor must first have + // synchronized on the class by executing a '_new' bytecode. + return true; } } - - return access_OK; - + if (C->is_compiling_clinit_for(field_holder)) { + return true; // access in the context of static initializer + } + return false; } From f5a64c000194a69392b77aebc46dcd11513ef2e8 Mon Sep 17 00:00:00 2001 From: Vladimir Ivanov Date: Mon, 4 Feb 2019 17:35:36 -0800 Subject: [PATCH 06/36] 8075052: Autobox elimination hinders loop unrolling Reviewed-by: kvn --- src/hotspot/share/opto/callGenerator.cpp | 160 ++++++++++++----------- 1 file changed, 84 insertions(+), 76 deletions(-) diff --git a/src/hotspot/share/opto/callGenerator.cpp b/src/hotspot/share/opto/callGenerator.cpp index 28f7d21ccf5..76da4932f8d 100644 --- a/src/hotspot/share/opto/callGenerator.cpp +++ b/src/hotspot/share/opto/callGenerator.cpp @@ -296,16 +296,16 @@ CallGenerator* CallGenerator::for_virtual_call(ciMethod* m, int vtable_index) { // Allow inlining decisions to be delayed class LateInlineCallGenerator : public DirectCallGenerator { private: - // unique id for log compilation - jlong _unique_id; + jlong _unique_id; // unique id for log compilation + bool _is_pure_call; // a hint that the call doesn't have important side effects to care about protected: CallGenerator* _inline_cg; virtual bool do_late_inline_check(JVMState* jvms) { return true; } public: - LateInlineCallGenerator(ciMethod* method, CallGenerator* inline_cg) : - DirectCallGenerator(method, true), _unique_id(0), _inline_cg(inline_cg) {} + LateInlineCallGenerator(ciMethod* method, CallGenerator* inline_cg, bool is_pure_call = false) : + DirectCallGenerator(method, true), _unique_id(0), _is_pure_call(is_pure_call), _inline_cg(inline_cg) {} virtual bool is_late_inline() const { return true; } @@ -389,78 +389,86 @@ void LateInlineCallGenerator::do_late_inline() { C->remove_macro_node(call); } - // Make a clone of the JVMState that appropriate to use for driving a parse - JVMState* old_jvms = call->jvms(); - JVMState* jvms = old_jvms->clone_shallow(C); - uint size = call->req(); - SafePointNode* map = new SafePointNode(size, jvms); - for (uint i1 = 0; i1 < size; i1++) { - map->init_req(i1, call->in(i1)); + bool result_not_used = (callprojs.resproj == NULL || callprojs.resproj->outcnt() == 0); + if (_is_pure_call && result_not_used) { + // The call is marked as pure (no important side effects), but result isn't used. + // It's safe to remove the call. + GraphKit kit(call->jvms()); + kit.replace_call(call, C->top(), true); + } else { + // Make a clone of the JVMState that appropriate to use for driving a parse + JVMState* old_jvms = call->jvms(); + JVMState* jvms = old_jvms->clone_shallow(C); + uint size = call->req(); + SafePointNode* map = new SafePointNode(size, jvms); + for (uint i1 = 0; i1 < size; i1++) { + map->init_req(i1, call->in(i1)); + } + + // Make sure the state is a MergeMem for parsing. + if (!map->in(TypeFunc::Memory)->is_MergeMem()) { + Node* mem = MergeMemNode::make(map->in(TypeFunc::Memory)); + C->initial_gvn()->set_type_bottom(mem); + map->set_req(TypeFunc::Memory, mem); + } + + uint nargs = method()->arg_size(); + // blow away old call arguments + Node* top = C->top(); + for (uint i1 = 0; i1 < nargs; i1++) { + map->set_req(TypeFunc::Parms + i1, top); + } + jvms->set_map(map); + + // Make enough space in the expression stack to transfer + // the incoming arguments and return value. + map->ensure_stack(jvms, jvms->method()->max_stack()); + for (uint i1 = 0; i1 < nargs; i1++) { + map->set_argument(jvms, i1, call->in(TypeFunc::Parms + i1)); + } + + C->print_inlining_assert_ready(); + + C->print_inlining_move_to(this); + + C->log_late_inline(this); + + // This check is done here because for_method_handle_inline() method + // needs jvms for inlined state. + if (!do_late_inline_check(jvms)) { + map->disconnect_inputs(NULL, C); + return; + } + + // Setup default node notes to be picked up by the inlining + Node_Notes* old_nn = C->node_notes_at(call->_idx); + if (old_nn != NULL) { + Node_Notes* entry_nn = old_nn->clone(C); + entry_nn->set_jvms(jvms); + C->set_default_node_notes(entry_nn); + } + + // Now perform the inlining using the synthesized JVMState + JVMState* new_jvms = _inline_cg->generate(jvms); + if (new_jvms == NULL) return; // no change + if (C->failing()) return; + + // Capture any exceptional control flow + GraphKit kit(new_jvms); + + // Find the result object + Node* result = C->top(); + int result_size = method()->return_type()->size(); + if (result_size != 0 && !kit.stopped()) { + result = (result_size == 1) ? kit.pop() : kit.pop_pair(); + } + + C->set_has_loops(C->has_loops() || _inline_cg->method()->has_loops()); + C->env()->notice_inlined_method(_inline_cg->method()); + C->set_inlining_progress(true); + C->set_do_cleanup(kit.stopped()); // path is dead; needs cleanup + kit.replace_call(call, result, true); } - - // Make sure the state is a MergeMem for parsing. - if (!map->in(TypeFunc::Memory)->is_MergeMem()) { - Node* mem = MergeMemNode::make(map->in(TypeFunc::Memory)); - C->initial_gvn()->set_type_bottom(mem); - map->set_req(TypeFunc::Memory, mem); - } - - uint nargs = method()->arg_size(); - // blow away old call arguments - Node* top = C->top(); - for (uint i1 = 0; i1 < nargs; i1++) { - map->set_req(TypeFunc::Parms + i1, top); - } - jvms->set_map(map); - - // Make enough space in the expression stack to transfer - // the incoming arguments and return value. - map->ensure_stack(jvms, jvms->method()->max_stack()); - for (uint i1 = 0; i1 < nargs; i1++) { - map->set_argument(jvms, i1, call->in(TypeFunc::Parms + i1)); - } - - C->print_inlining_assert_ready(); - - C->print_inlining_move_to(this); - - C->log_late_inline(this); - - // This check is done here because for_method_handle_inline() method - // needs jvms for inlined state. - if (!do_late_inline_check(jvms)) { - map->disconnect_inputs(NULL, C); - return; - } - - // Setup default node notes to be picked up by the inlining - Node_Notes* old_nn = C->node_notes_at(call->_idx); - if (old_nn != NULL) { - Node_Notes* entry_nn = old_nn->clone(C); - entry_nn->set_jvms(jvms); - C->set_default_node_notes(entry_nn); - } - - // Now perform the inlining using the synthesized JVMState - JVMState* new_jvms = _inline_cg->generate(jvms); - if (new_jvms == NULL) return; // no change - if (C->failing()) return; - - // Capture any exceptional control flow - GraphKit kit(new_jvms); - - // Find the result object - Node* result = C->top(); - int result_size = method()->return_type()->size(); - if (result_size != 0 && !kit.stopped()) { - result = (result_size == 1) ? kit.pop() : kit.pop_pair(); - } - - C->set_has_loops(C->has_loops() || _inline_cg->method()->has_loops()); - C->env()->notice_inlined_method(_inline_cg->method()); - C->set_inlining_progress(true); - C->set_do_cleanup(kit.stopped()); // path is dead; needs cleanup - kit.replace_call(call, result, true); } @@ -551,7 +559,7 @@ class LateInlineBoxingCallGenerator : public LateInlineCallGenerator { public: LateInlineBoxingCallGenerator(ciMethod* method, CallGenerator* inline_cg) : - LateInlineCallGenerator(method, inline_cg) {} + LateInlineCallGenerator(method, inline_cg, /*is_pure=*/true) {} virtual JVMState* generate(JVMState* jvms) { Compile *C = Compile::current(); From 6f437c6c9a23d6578aff54671c3b0864e038f6b2 Mon Sep 17 00:00:00 2001 From: Vladimir Ivanov Date: Mon, 4 Feb 2019 17:35:38 -0800 Subject: [PATCH 07/36] 8218406: C1: Redundant nmethod dependency for private method is added Reviewed-by: kvn --- src/hotspot/share/c1/c1_GraphBuilder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hotspot/share/c1/c1_GraphBuilder.cpp b/src/hotspot/share/c1/c1_GraphBuilder.cpp index 31cdbd8d028..7cf49da3956 100644 --- a/src/hotspot/share/c1/c1_GraphBuilder.cpp +++ b/src/hotspot/share/c1/c1_GraphBuilder.cpp @@ -1989,7 +1989,7 @@ void GraphBuilder::invoke(Bytecodes::Code code) { if (cha_monomorphic_target != NULL) { assert(!cha_monomorphic_target->is_abstract(), ""); - if (!(target->is_final_method())) { + if (!target->is_final_method() && !target->is_private()) { // If we inlined because CHA revealed only a single target method, // then we are dependent on that target method not getting overridden // by dynamic class loading. Be sure to test the "static" receiver From 9c09bb98d401e7cd7394c411c9f6f59189137646 Mon Sep 17 00:00:00 2001 From: Jini George Date: Tue, 5 Feb 2019 00:43:38 +0530 Subject: [PATCH 08/36] 8215568: Refactor SA clhsdb tests to use ClhsdbLauncher Refactoring the SA tests which test clhsdb commands to use ClhsdbLauncher for uniformity and ease of maintainence Reviewed-by: jcbeyler, dholmes --- .../serviceability/sa/ClhsdbCDSCore.java | 4 +- .../sa/ClhsdbCDSJstackPrintAll.java | 4 +- .../jtreg/serviceability/sa/ClhsdbFlags.java | 1 - .../serviceability/sa/ClhsdbInspect.java | 2 +- .../jtreg/serviceability/sa/ClhsdbJdis.java | 5 +- .../jtreg/serviceability/sa/ClhsdbJstack.java | 7 +- .../serviceability/sa/ClhsdbLauncher.java | 4 +- .../jtreg/serviceability/sa/ClhsdbPmap.java | 1 - .../serviceability/sa/ClhsdbPrintAll.java | 8 +- .../serviceability/sa/ClhsdbPrintStatics.java | 3 +- .../jtreg/serviceability/sa/ClhsdbPstack.java | 1 - .../sa/ClhsdbRegionDetailsScanOopsForG1.java | 2 +- .../serviceability/sa/ClhsdbScanOops.java | 2 +- .../jtreg/serviceability/sa/ClhsdbSource.java | 12 +- .../jtreg/serviceability/sa/ClhsdbThread.java | 4 +- .../jtreg/serviceability/sa/ClhsdbWhere.java | 1 - .../sa/TestClhsdbJstackLock.java | 143 ++++-------------- .../serviceability/sa/TestIntConstant.java | 110 ++++---------- .../jtreg/serviceability/sa/TestPrintMdo.java | 138 ++++------------- .../jtreg/serviceability/sa/TestType.java | 104 ++++--------- .../jtreg/serviceability/sa/TestUniverse.java | 91 ++++------- 21 files changed, 170 insertions(+), 477 deletions(-) diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbCDSCore.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbCDSCore.java index 4960867c905..7b074475a21 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbCDSCore.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbCDSCore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -171,7 +171,7 @@ public class ClhsdbCDSCore { "_nofast_getfield", "_nofast_putfield", "Constant Pool of", - "public static void main(java.lang.String[])", + "public static void main\\(java.lang.String\\[\\]\\)", "Bytecode", "invokevirtual", "checkcast", diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbCDSJstackPrintAll.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbCDSJstackPrintAll.java index debe1fa6383..a9f30d69731 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbCDSJstackPrintAll.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbCDSJstackPrintAll.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -95,7 +95,7 @@ public class ClhsdbCDSJstackPrintAll { "_nofast_getfield", "_nofast_putfield", "Constant Pool of", - "public static void main(java.lang.String[])", + "public static void main\\(java.lang.String\\[\\]\\)", "Bytecode", "invokevirtual", "checkcast", diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbFlags.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbFlags.java index dabad7c1573..ac48b9f9ea2 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbFlags.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbFlags.java @@ -27,7 +27,6 @@ import java.util.List; import java.util.Map; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.Platform; import jdk.test.lib.Utils; import jtreg.SkippedException; diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbInspect.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbInspect.java index 5a52c16b7f2..802683a608c 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbInspect.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbInspect.java @@ -62,7 +62,7 @@ public class ClhsdbInspect { "instance of Oop for java/lang/Class"); tokensMap.put("Method*=", "Type is Method"); tokensMap.put("(a java.lang.ref.ReferenceQueue$Lock)", - "instance of Oop for java/lang/ref/ReferenceQueue$Lock"); + "instance of Oop for java/lang/ref/ReferenceQueue\\$Lock"); String[] lines = jstackOutput.split("\\R"); diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbJdis.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbJdis.java index cc53e5ea0a8..6ca5c6617d0 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbJdis.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbJdis.java @@ -72,14 +72,15 @@ public class ClhsdbJdis { Map> expStrMap = new HashMap<>(); expStrMap.put(cmdStr, List.of( - "public static void main(java.lang.String[])", + "public static void main\\(java\\.lang\\.String\\[\\]\\)", "Holder Class", "public class jdk.test.lib.apps.LingeredApp @", + "public class jdk\\.test\\.lib\\.apps\\.LingeredApp @", "Bytecode", "line bci bytecode", "Exception Table", "start bci end bci handler bci catch type", - "Constant Pool of [public class jdk.test.lib.apps.LingeredApp @")); + "Constant Pool of \\[public class jdk\\.test\\.lib\\.apps\\.LingeredApp @")); test.run(theApp.getPid(), cmds, expStrMap, null); } catch (SkippedException e) { diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbJstack.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbJstack.java index 3172307faea..a18c2e1442e 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbJstack.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbJstack.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.Platform; import jtreg.SkippedException; /** @@ -57,11 +56,11 @@ public class ClhsdbJstack { Map> expStrMap = new HashMap<>(); expStrMap.put("jstack -v", List.of( "No deadlocks found", - "Common-Cleaner", + "Common\\-Cleaner", "Signal Dispatcher", - "java.lang.ref.Finalizer$FinalizerThread.run", + "java.lang.ref.Finalizer\\$FinalizerThread.run", "java.lang.ref.Reference", - "Method*", + "Method\\*", "LingeredApp.main")); test.run(theApp.getPid(), cmds, expStrMap, null); diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbLauncher.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbLauncher.java index b98349aa9db..bede07e2eb2 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbLauncher.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbLauncher.java @@ -145,7 +145,7 @@ public class ClhsdbLauncher { List expectedStr = expectedStrMap.get(cmd); if (expectedStr != null) { for (String exp : expectedStr) { - out.shouldContain(exp); + out.shouldMatch(exp); } } } @@ -154,7 +154,7 @@ public class ClhsdbLauncher { List unExpectedStr = unExpectedStrMap.get(cmd); if (unExpectedStr != null) { for (String unExp : unExpectedStr) { - out.shouldNotContain(unExp); + out.shouldNotMatch(unExp); } } } diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbPmap.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbPmap.java index bdaedc3df9e..ecd5267cdc5 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbPmap.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbPmap.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.Platform; import jtreg.SkippedException; /** diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbPrintAll.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbPrintAll.java index b3999d4be44..705d0693442 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbPrintAll.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbPrintAll.java @@ -56,11 +56,11 @@ public class ClhsdbPrintAll { expStrMap.put("printall", List.of( "aload_0", "Constant Pool of", - "public static void main(java.lang.String[])", + "public static void main\\(java.lang.String\\[\\]\\)", "Bytecode", - "[enum] class Song [signature Ljava/lang/Enum;]", - "Method java.lang.Object clone()", - "public static Song[] values()", + "\\[enum\\] class Song \\[signature Ljava/lang/Enum\\;\\]", + "Method java.lang.Object clone\\(\\)", + "public static Song\\[\\] values\\(\\)", "invokevirtual", "checkcast", "Field Song HAVANA", diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbPrintStatics.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbPrintStatics.java index 95d5e769ecf..f7e0bf92b82 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbPrintStatics.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbPrintStatics.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.Platform; import jtreg.SkippedException; /** @@ -71,7 +70,7 @@ public class ClhsdbPrintStatics { expStrMap.put("printstatics Threads", List.of( "Static fields of Threads", "_number_of_threads", "_number_of_non_daemon_threads", - "JavaThread* Threads")); + "JavaThread\\* Threads")); expStrMap.put("printstatics Universe", List.of( "Static fields of Universe", "uintptr_t Universe::_verify_oop_mask", diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbPstack.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbPstack.java index 6117f8daf3c..93707edfa9d 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbPstack.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbPstack.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.Platform; import jtreg.SkippedException; /** diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbRegionDetailsScanOopsForG1.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbRegionDetailsScanOopsForG1.java index 0beaf9bf6fc..75d95787628 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbRegionDetailsScanOopsForG1.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbRegionDetailsScanOopsForG1.java @@ -79,7 +79,7 @@ public class ClhsdbRegionDetailsScanOopsForG1 { // words[0] and words[1] represent the start and end addresses String cmd = "scanoops " + words[0] + " " + words[1]; expStrMap = new HashMap<>(); - expStrMap.put(cmd, List.of("[Ljava/lang/String")); + expStrMap.put(cmd, List.of("\\[Ljava/lang/String")); test.run(theApp.getPid(), List.of(cmd), expStrMap, null); } catch (SkippedException e) { throw e; diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbScanOops.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbScanOops.java index b919896ab99..2763a06bd59 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbScanOops.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbScanOops.java @@ -80,7 +80,7 @@ public class ClhsdbScanOops { expStrMap.put(cmd, List.of ("java/lang/Object", "java/lang/Class", "java/lang/Thread", - "java/lang/String", "[B", "[I")); + "java/lang/String", "\\[B", "\\[I")); // Test the 'type' option also // scanoops java/lang/String diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbSource.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbSource.java index 8f9242969a7..cdf0cd2b441 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbSource.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbSource.java @@ -58,16 +58,16 @@ public class ClhsdbSource { Map> expStrMap = new HashMap<>(); expStrMap.put("source clhsdb_cmd_file", List.of( "No deadlocks found", - "Common-Cleaner", + "Common\\-Cleaner", "Signal Dispatcher", - "java.lang.ref.Finalizer$FinalizerThread.run", + "java.lang.ref.Finalizer\\$FinalizerThread.run", "java.lang.ref.Reference", - "Method*", + "Method\\*", "LingeredApp.main", "Available commands:", - "attach pid | exec core", - "intConstant [ name [ value ] ]", - "type [ type [ name super isOop isInteger isUnsigned size ] ]")); + "attach pid \\| exec core", + "intConstant \\[ name \\[ value \\] \\]", + "type \\[ type \\[ name super isOop isInteger isUnsigned size \\] \\]")); Map> unExpStrMap = new HashMap<>(); unExpStrMap.put("source clhsdb_cmd_file", List.of( diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbThread.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbThread.java index 98eb7739229..cb9b389fe56 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbThread.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbThread.java @@ -51,7 +51,7 @@ public class ClhsdbThread { Map> expStrMap = new HashMap<>(); // Check for the presence of the usage string - expStrMap.put("thread", List.of( "Usage: thread { -a | id }")); + expStrMap.put("thread", List.of( "Usage: thread \\{ \\-a \\| id \\}")); expStrMap.put("thread -a", List.of( "State: BLOCKED", "Stack in use by Java", @@ -69,7 +69,7 @@ public class ClhsdbThread { Map> unExpStrMap = new HashMap<>(); unExpStrMap.put( "thread -a", - List.of("Couldn't find thread -a")); + List.of("Couldn't find thread \\-a")); String consolidatedOutput = test.run( theApp.getPid(), diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbWhere.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbWhere.java index 20ae767eee3..5e3ef6c566a 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbWhere.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbWhere.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.Platform; import jtreg.SkippedException; /** diff --git a/test/hotspot/jtreg/serviceability/sa/TestClhsdbJstackLock.java b/test/hotspot/jtreg/serviceability/sa/TestClhsdbJstackLock.java index e40d2192324..1eb036edd28 100644 --- a/test/hotspot/jtreg/serviceability/sa/TestClhsdbJstackLock.java +++ b/test/hotspot/jtreg/serviceability/sa/TestClhsdbJstackLock.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,19 +22,12 @@ */ import java.util.ArrayList; -import java.util.Scanner; import java.util.List; -import java.io.File; -import java.io.IOException; -import java.util.stream.Collectors; -import java.io.OutputStream; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.JDKToolLauncher; -import jdk.test.lib.Platform; -import jdk.test.lib.process.ProcessTools; -import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.Utils; -import jdk.test.lib.Asserts; +import java.util.Map; +import java.util.HashMap; +import jtreg.SkippedException; /** * @test @@ -45,117 +38,39 @@ import jdk.test.lib.Asserts; public class TestClhsdbJstackLock { - private static final String JSTACK_OUT_FILE = "jstack_out.txt"; - - private static void verifyJStackOutput() throws Exception { - - Exception unexpected = null; - File jstackFile = new File(JSTACK_OUT_FILE); - Asserts.assertTrue(jstackFile.exists() && jstackFile.isFile(), - "File with jstack output not created: " + - jstackFile.getAbsolutePath()); - try { - Scanner scanner = new Scanner(jstackFile); - - boolean classLockOwnerFound = false; - boolean classLockWaiterFound = false; - boolean objectLockOwnerFound = false; - boolean primitiveLockOwnerFound = false; - - while (scanner.hasNextLine()) { - String line = scanner.nextLine(); - System.out.println(line); - - if (line.contains("missing reason for ")) { - unexpected = new RuntimeException("Unexpected msg: missing reason for "); - break; - } - if (line.matches("^\\s+- locked <0x[0-9a-f]+> \\(a java\\.lang\\.Class for LingeredAppWithLock\\)$")) { - classLockOwnerFound = true; - } - if (line.matches("^\\s+- waiting to lock <0x[0-9a-f]+> \\(a java\\.lang\\.Class for LingeredAppWithLock\\)$")) { - classLockWaiterFound = true; - } - if (line.matches("^\\s+- locked <0x[0-9a-f]+> \\(a java\\.lang\\.Thread\\)$")) { - objectLockOwnerFound = true; - } - if (line.matches("^\\s+- locked <0x[0-9a-f]+> \\(a java\\.lang\\.Class for int\\)$")) { - primitiveLockOwnerFound = true; - } - } - - if (!classLockOwnerFound || !classLockWaiterFound || - !objectLockOwnerFound || !primitiveLockOwnerFound) { - unexpected = new RuntimeException( - "classLockOwnerFound = " + classLockOwnerFound + - ", classLockWaiterFound = " + classLockWaiterFound + - ", objectLockOwnerFound = " + objectLockOwnerFound + - ", primitiveLockOwnerFound = " + primitiveLockOwnerFound); - } - if (unexpected != null) { - throw unexpected; - } - } catch (Exception ex) { - throw new RuntimeException("Test ERROR " + ex, ex); - } finally { - jstackFile.delete(); - } - } - - private static void startClhsdbForLock(long lingeredAppPid) throws Exception { - - Process p; - JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jhsdb"); - launcher.addToolArg("clhsdb"); - launcher.addToolArg("--pid"); - launcher.addToolArg(Long.toString(lingeredAppPid)); - - ProcessBuilder pb = new ProcessBuilder(); - pb.command(launcher.getCommand()); - System.out.println(pb.command().stream().collect(Collectors.joining(" "))); - - try { - p = pb.start(); - } catch (Exception attachE) { - throw new Error("Couldn't start jhsdb or attach to LingeredApp : " + attachE); - } - - // Issue the 'jstack' input at the clhsdb prompt. - OutputStream input = p.getOutputStream(); - String str = "jstack > " + JSTACK_OUT_FILE + "\nquit\n"; - try { - input.write(str.getBytes()); - input.flush(); - } catch (IOException ioe) { - throw new Error("Problem issuing the jstack command: " + str, ioe); - } - - OutputAnalyzer output = new OutputAnalyzer(p); - - try { - p.waitFor(); - } catch (InterruptedException ie) { - p.destroyForcibly(); - throw new Error("Problem awaiting the child process: " + ie, ie); - } - - output.shouldHaveExitValue(0); - } - public static void main (String... args) throws Exception { - - LingeredApp app = null; - + System.out.println("Starting TestClhsdbJstackLock test"); + LingeredAppWithLock app = null; try { + ClhsdbLauncher test = new ClhsdbLauncher(); List vmArgs = new ArrayList(Utils.getVmOptions()); app = new LingeredAppWithLock(); LingeredApp.startApp(vmArgs, app); - System.out.println ("Started LingeredApp with pid " + app.getPid()); - startClhsdbForLock(app.getPid()); - verifyJStackOutput(); + + System.out.println ("Started LingeredAppWithLock with pid " + app.getPid()); + + List cmds = List.of("jstack"); + + Map> expStrMap = new HashMap<>(); + Map> unExpStrMap = new HashMap<>(); + expStrMap.put("jstack", List.of( + "^\\s+- locked <0x[0-9a-f]+> \\(a java\\.lang\\.Class for LingeredAppWithLock\\)$", + "^\\s+- waiting to lock <0x[0-9a-f]+> \\(a java\\.lang\\.Class for LingeredAppWithLock\\)$", + "^\\s+- locked <0x[0-9a-f]+> \\(a java\\.lang\\.Thread\\)$", + "^\\s+- locked <0x[0-9a-f]+> \\(a java\\.lang\\.Class for int\\)$")); + unExpStrMap.put("jstack", List.of( + "missing reason for ")); + test.run(app.getPid(), cmds, expStrMap, unExpStrMap); + } catch (SkippedException se) { + throw se; + } catch (Exception ex) { + throw new RuntimeException("Test ERROR " + ex, ex); } finally { LingeredApp.stopApp(app); } + + System.out.println("Test PASSED"); } } + diff --git a/test/hotspot/jtreg/serviceability/sa/TestIntConstant.java b/test/hotspot/jtreg/serviceability/sa/TestIntConstant.java index c608b004fce..d8c99885d6d 100644 --- a/test/hotspot/jtreg/serviceability/sa/TestIntConstant.java +++ b/test/hotspot/jtreg/serviceability/sa/TestIntConstant.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,14 +23,11 @@ import java.util.ArrayList; import java.util.List; -import java.io.IOException; -import java.util.stream.Collectors; -import java.io.OutputStream; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.JDKToolLauncher; -import jdk.test.lib.Platform; -import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.Utils; +import java.util.Map; +import java.util.HashMap; +import jtreg.SkippedException; /** * @test @@ -44,96 +41,45 @@ import jdk.test.lib.Utils; public class TestIntConstant { - private static void testClhsdbForIntConstant( - long lingeredAppPid, - String commandString, - String[] expectedOutputStrings) throws Exception { - - Process p; - JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jhsdb"); - launcher.addToolArg("clhsdb"); - launcher.addToolArg("--pid"); - launcher.addToolArg(Long.toString(lingeredAppPid)); - - ProcessBuilder pb = new ProcessBuilder(); - pb.command(launcher.getCommand()); - pb.redirectError(ProcessBuilder.Redirect.INHERIT); - System.out.println( - pb.command().stream().collect(Collectors.joining(" "))); - - try { - p = pb.start(); - } catch (Exception attachE) { - throw new Error("Couldn't start jhsdb or attach to LingeredApp : " + attachE); - } - - // Issue the 'intConstant' inputs at the clhsdb prompt. - OutputStream input = p.getOutputStream(); - try { - input.write((commandString + "\n").getBytes()); - input.write("quit\n".getBytes()); - input.flush(); - } catch (IOException ioe) { - throw new Error("Problem issuing the intConstant command: " + - commandString + ioe); - } - - OutputAnalyzer output = new OutputAnalyzer(p); - - System.out.println("Awaiting process completion"); - try { - p.waitFor(); - } catch (InterruptedException ie) { - p.destroyForcibly(); - throw new Error("Problem awaiting the child process: " + ie); - } - - output.shouldHaveExitValue(0); - System.out.println(output.getOutput()); - for (String expectedOutputString: expectedOutputStrings) { - output.shouldContain(expectedOutputString); - } - } - - public static void testIntConstant() throws Exception { + public static void main (String... args) throws Exception { + System.out.println("Starting TestIntConstant test"); LingeredApp app = null; - try { - List vmArgs = new ArrayList(); - vmArgs.addAll(Utils.getVmOptions()); + ClhsdbLauncher test = new ClhsdbLauncher(); + List vmArgs = new ArrayList(Utils.getVmOptions()); app = LingeredApp.startApp(vmArgs); + System.out.println ("Started LingeredApp with pid " + app.getPid()); + List cmds = List.of("intConstant", + "intConstant _temp_constant 45", + "intConstant _temp_constant"); + + Map> expStrMap = new HashMap<>(); + // Strings to check for in the output of 'intConstant'. The // 'intConstant' command prints out entries from the // 'gHotSpotVMIntConstants', which is a table of integer constants, // with names and the values derived from enums and #define preprocessor // macros in hotspot. - String[] defaultOutputStrings = - {"CollectedHeap::G1 4", + expStrMap.put("intConstant", List.of( + "CollectedHeap::G1 4", "RUNNABLE 2", "Deoptimization::Reason_class_check 4", "InstanceKlass::_misc_is_unsafe_anonymous 32", "Generation::ParNew 1", - "_thread_uninitialized 0"}; - String[] tempConstantString = {"intConstant _temp_constant 45"}; - testClhsdbForIntConstant(app.getPid(), "intConstant", defaultOutputStrings); - testClhsdbForIntConstant( - app.getPid(), - "intConstant _temp_constant 45\nintConstant _temp_constant", - tempConstantString); - } finally { - LingeredApp.stopApp(app); - } - } - - public static void main (String... args) throws Exception { - - try { - testIntConstant(); - } catch (Exception e) { - throw new Error("Test failed with " + e); + "_thread_uninitialized 0")); + expStrMap.put("intConstant _temp_constant", List.of( + "intConstant _temp_constant 45")); + test.run(app.getPid(), cmds, expStrMap, null); + } catch (SkippedException se) { + throw se; + } catch (Exception ex) { + throw new RuntimeException("Test ERROR " + ex, ex); + } finally { + LingeredApp.stopApp(app); } + System.out.println("Test PASSED"); } } diff --git a/test/hotspot/jtreg/serviceability/sa/TestPrintMdo.java b/test/hotspot/jtreg/serviceability/sa/TestPrintMdo.java index 780c6e00334..5fae14d739f 100644 --- a/test/hotspot/jtreg/serviceability/sa/TestPrintMdo.java +++ b/test/hotspot/jtreg/serviceability/sa/TestPrintMdo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,19 +22,12 @@ */ import java.util.ArrayList; -import java.util.Scanner; import java.util.List; -import java.io.File; -import java.io.IOException; -import java.util.stream.Collectors; -import java.io.OutputStream; +import java.util.Map; +import java.util.HashMap; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.JDKToolLauncher; -import jdk.test.lib.Platform; -import jdk.test.lib.process.ProcessTools; -import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.Utils; -import jdk.test.lib.Asserts; +import jtreg.SkippedException; /** * @test @@ -47,119 +40,40 @@ import jdk.test.lib.Asserts; public class TestPrintMdo { - private static final String PRINTMDO_OUT_FILE = "printmdo_out.txt"; - - private static void verifyPrintMdoOutput() throws Exception { - - Exception unexpected = null; - File printMdoFile = new File(PRINTMDO_OUT_FILE); - Asserts.assertTrue(printMdoFile.exists() && printMdoFile.isFile(), - "File with printmdo output not created: " + - printMdoFile.getAbsolutePath()); - try { - Scanner scanner = new Scanner(printMdoFile); - - String unexpectedMsg = - "One or more of 'VirtualCallData', 'CounterData', " + - "'ReceiverTypeData', 'bci', 'MethodData' " + - "or 'java/lang/Object' not found"; - boolean knownClassFound = false; - boolean knownProfileDataTypeFound = false; - boolean knownTokensFound = false; - - while (scanner.hasNextLine()) { - String line = scanner.nextLine(); - line = line.trim(); - System.out.println(line); - - if (line.contains("missing reason for ")) { - unexpected = new RuntimeException("Unexpected msg: missing reason for "); - break; - } - if (line.contains("VirtualCallData") || - line.contains("CounterData") || - line.contains("ReceiverTypeData")) { - knownProfileDataTypeFound = true; - } - if (line.contains("bci") || - line.contains("MethodData")) { - knownTokensFound = true; - } - if (line.contains("java/lang/Object")) { - knownClassFound = true; - } - } - if ((knownClassFound == false) || - (knownTokensFound == false) || - (knownProfileDataTypeFound == false)) { - unexpected = new RuntimeException(unexpectedMsg); - } - if (unexpected != null) { - throw unexpected; - } - } catch (Exception ex) { - throw new RuntimeException("Test ERROR " + ex, ex); - } finally { - printMdoFile.delete(); - } - } - - private static void startClhsdbForPrintMdo(long lingeredAppPid) throws Exception { - - Process p; - JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jhsdb"); - launcher.addToolArg("clhsdb"); - launcher.addToolArg("--pid"); - launcher.addToolArg(Long.toString(lingeredAppPid)); - - ProcessBuilder pb = new ProcessBuilder(); - pb.command(launcher.getCommand()); - System.out.println( - pb.command().stream().collect(Collectors.joining(" "))); - - try { - p = pb.start(); - } catch (Exception attachE) { - throw new Error("Couldn't start jhsdb or attach to LingeredApp : " + attachE); - } - - // Issue the 'printmdo' input at the clhsdb prompt. - OutputStream input = p.getOutputStream(); - String str = "printmdo -a > " + PRINTMDO_OUT_FILE + "\nquit\n"; - try { - input.write(str.getBytes()); - input.flush(); - } catch (IOException ioe) { - throw new Error("Problem issuing the printmdo command: " + str, ioe); - } - - OutputAnalyzer output = new OutputAnalyzer(p); - - try { - p.waitFor(); - } catch (InterruptedException ie) { - p.destroyForcibly(); - throw new Error("Problem awaiting the child process: " + ie, ie); - } - - output.shouldHaveExitValue(0); - } - public static void main (String... args) throws Exception { + System.out.println("Starting TestPrintMdo test"); LingeredApp app = null; - try { + ClhsdbLauncher test = new ClhsdbLauncher(); List vmArgs = new ArrayList(); vmArgs.add("-XX:+ProfileInterpreter"); vmArgs.addAll(Utils.getVmOptions()); app = LingeredApp.startApp(vmArgs); System.out.println ("Started LingeredApp with pid " + app.getPid()); - startClhsdbForPrintMdo(app.getPid()); - verifyPrintMdoOutput(); + List cmds = List.of("printmdo -a"); + + Map> expStrMap = new HashMap<>(); + Map> unExpStrMap = new HashMap<>(); + expStrMap.put("printmdo -a", List.of( + "VirtualCallData", + "CounterData", + "ReceiverTypeData", + "bci", + "MethodData", + "java/lang/Object")); + unExpStrMap.put("printmdo -a", List.of( + "missing reason for ")); + test.run(app.getPid(), cmds, expStrMap, unExpStrMap); + } catch (SkippedException se) { + throw se; + } catch (Exception ex) { + throw new RuntimeException("Test ERROR " + ex, ex); } finally { LingeredApp.stopApp(app); } + + System.out.println("Test PASSED"); } } diff --git a/test/hotspot/jtreg/serviceability/sa/TestType.java b/test/hotspot/jtreg/serviceability/sa/TestType.java index d1f847663a6..0ae8ed055f0 100644 --- a/test/hotspot/jtreg/serviceability/sa/TestType.java +++ b/test/hotspot/jtreg/serviceability/sa/TestType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,14 +23,11 @@ import java.util.ArrayList; import java.util.List; -import java.io.IOException; -import java.util.stream.Collectors; -import java.io.OutputStream; +import java.util.Map; +import java.util.HashMap; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.JDKToolLauncher; -import jdk.test.lib.Platform; -import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.Utils; +import jtreg.SkippedException; /** * @test @@ -44,84 +41,41 @@ import jdk.test.lib.Utils; public class TestType { - private static void testClhsdbForType( - long lingeredAppPid, - String commandString, - String[] expectedOutputStrings) throws Exception { - - Process p; - JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jhsdb"); - launcher.addToolArg("clhsdb"); - launcher.addToolArg("--pid"); - launcher.addToolArg(Long.toString(lingeredAppPid)); - - ProcessBuilder pb = new ProcessBuilder(); - pb.command(launcher.getCommand()); - System.out.println( - pb.command().stream().collect(Collectors.joining(" "))); - - try { - p = pb.start(); - } catch (Exception attachE) { - throw new Error("Couldn't start jhsdb or attach to LingeredApp : " + attachE); - } - - // Issue the 'type' commands at the clhsdb prompt. - OutputStream input = p.getOutputStream(); - try { - input.write((commandString + "\n").getBytes()); - input.write("quit\n".getBytes()); - input.flush(); - } catch (IOException ioe) { - throw new Error("Problem issuing the 'type' command ", ioe); - } - - OutputAnalyzer output = new OutputAnalyzer(p); - - try { - p.waitFor(); - } catch (InterruptedException ie) { - p.destroyForcibly(); - throw new Error("Problem awaiting the child process: " + ie); - } - - output.shouldHaveExitValue(0); - System.out.println(output.getOutput()); - - for (String expectedOutputString: expectedOutputStrings) { - output.shouldContain(expectedOutputString); - } - } - public static void main (String... args) throws Exception { - LingeredApp app = null; + System.out.println("Starting TestType test"); + LingeredApp app = null; try { - List vmArgs = new ArrayList(); - vmArgs.addAll(Utils.getVmOptions()); + ClhsdbLauncher test = new ClhsdbLauncher(); + List vmArgs = new ArrayList(Utils.getVmOptions()); + + app = LingeredApp.startApp(vmArgs); + System.out.println ("Started LingeredApp with pid " + app.getPid()); + List cmds = List.of("type", "type InstanceKlass"); + + Map> expStrMap = new HashMap<>(); // Strings to check for in the output of 'type'. The 'type' // command prints out entries from 'gHotSpotVMTypes', which // is a table containing the hotspot types, their supertypes, // sizes, etc, which are of interest to the SA. - String[] defaultOutputStrings = - {"type G1CollectedHeap CollectedHeap", - "type ConstantPoolCache MetaspaceObj", - "type ConstantPool Metadata", - "type CompilerThread JavaThread", - "type CardGeneration Generation", - "type ArrayKlass Klass", - "type InstanceKlass Klass"}; + expStrMap.put("type", List.of( + "type G1CollectedHeap CollectedHeap", + "type ConstantPoolCache MetaspaceObj", + "type ConstantPool Metadata", + "type CompilerThread JavaThread", + "type CardGeneration Generation", + "type ArrayKlass Klass", + "type InstanceKlass Klass")); // String to check for in the output of "type InstanceKlass" - String[] instanceKlassOutputString = {"type InstanceKlass Klass"}; - - app = LingeredApp.startApp(vmArgs); - System.out.println ("Started LingeredApp with pid " + app.getPid()); - testClhsdbForType(app.getPid(), "type", defaultOutputStrings); - testClhsdbForType(app.getPid(), - "type InstanceKlass", - instanceKlassOutputString); + expStrMap.put("type InstanceKlass", List.of("type InstanceKlass Klass")); + test.run(app.getPid(), cmds, expStrMap, null); + } catch (SkippedException se) { + throw se; + } catch (Exception ex) { + throw new RuntimeException("Test ERROR " + ex, ex); } finally { LingeredApp.stopApp(app); } + System.out.println("Test PASSED"); } } diff --git a/test/hotspot/jtreg/serviceability/sa/TestUniverse.java b/test/hotspot/jtreg/serviceability/sa/TestUniverse.java index 76a6f7b36c7..e041d225150 100644 --- a/test/hotspot/jtreg/serviceability/sa/TestUniverse.java +++ b/test/hotspot/jtreg/serviceability/sa/TestUniverse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,13 +25,10 @@ import sun.hotspot.code.Compiler; import java.util.ArrayList; import java.util.List; -import java.io.IOException; -import java.util.stream.Collectors; -import java.io.OutputStream; +import java.util.Map; +import java.util.HashMap; import jdk.test.lib.apps.LingeredApp; -import jdk.test.lib.JDKToolLauncher; -import jdk.test.lib.Platform; -import jdk.test.lib.process.OutputAnalyzer; +import jtreg.SkippedException; /** * @test @@ -62,72 +59,40 @@ public class TestUniverse { private static void testClhsdbForUniverse(long lingeredAppPid, String gc) throws Exception { - Process p; - JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jhsdb"); - launcher.addToolArg("clhsdb"); - launcher.addToolArg("--pid"); - launcher.addToolArg(Long.toString(lingeredAppPid)); + ClhsdbLauncher launcher = new ClhsdbLauncher(); + List cmds = List.of("universe"); + Map> expStrMap = new HashMap<>(); + List expStrings = new ArrayList(); + expStrings.add("Heap Parameters"); - ProcessBuilder pb = new ProcessBuilder(); - pb.command(launcher.getCommand()); - System.out.println( - pb.command().stream().collect(Collectors.joining(" "))); - - try { - p = pb.start(); - } catch (Exception attachE) { - throw new Error("Couldn't start jhsdb or attach to LingeredApp : " + attachE); - } - - // Issue the 'universe' command at the clhsdb prompt. - OutputStream input = p.getOutputStream(); - try { - input.write("universe\n".getBytes()); - input.write("quit\n".getBytes()); - input.flush(); - } catch (IOException ioe) { - throw new Error("Problem issuing the 'universe' command ", ioe); - } - - OutputAnalyzer output = new OutputAnalyzer(p); - - try { - p.waitFor(); - } catch (InterruptedException ie) { - p.destroyForcibly(); - throw new Error("Problem awaiting the child process: " + ie, ie); - } if (gc.contains("UseZGC")) { - output.shouldContain("ZHeap"); + expStrings.add("ZHeap"); } - - output.shouldHaveExitValue(0); - System.out.println(output.getOutput()); - - output.shouldContain("Heap Parameters"); if (gc.contains("G1GC")) { - output.shouldContain("garbage-first heap"); - output.shouldContain("region size"); - output.shouldContain("G1 Young Generation:"); - output.shouldContain("regions ="); + expStrings.add("garbage-first heap"); + expStrings.add("region size"); + expStrings.add("G1 Young Generation:"); + expStrings.add("regions ="); } if (gc.contains("UseConcMarkSweepGC")) { - output.shouldContain("Gen 1: concurrent mark-sweep generation"); + expStrings.add("Gen 1: concurrent mark-sweep generation"); } if (gc.contains("UseSerialGC")) { - output.shouldContain("Gen 1: old"); + expStrings.add("Gen 1: old"); } if (gc.contains("UseParallelGC")) { - output.shouldContain("ParallelScavengeHeap"); - output.shouldContain("PSYoungGen"); - output.shouldContain("eden"); + expStrings.add("ParallelScavengeHeap"); + expStrings.add("PSYoungGen"); + expStrings.add("eden"); } if (gc.contains("UseEpsilonGC")) { - output.shouldContain("Epsilon heap"); - output.shouldContain("reserved"); - output.shouldContain("committed"); - output.shouldContain("used"); + expStrings.add("Epsilon heap"); + expStrings.add("reserved"); + expStrings.add("committed"); + expStrings.add("used"); } + expStrMap.put("universe", expStrings); + launcher.run(lingeredAppPid, cmds, expStrMap, null); } public static void test(String gc) throws Exception { @@ -145,8 +110,8 @@ public class TestUniverse { } } - public static void main (String... args) throws Exception { + System.out.println("Starting TestUniverse test"); try { test("-XX:+UseG1GC"); test("-XX:+UseParallelGC"); @@ -158,7 +123,11 @@ public class TestUniverse { } test("-XX:+UseEpsilonGC"); } + } catch (SkippedException se) { + throw se; } catch (Exception e) { + System.out.println(e.getMessage()); + e.printStackTrace(); throw new Error("Test failed with " + e); } } From 38e316f91c04571116eb39fed60071456ca90977 Mon Sep 17 00:00:00 2001 From: Ioi Lam Date: Mon, 4 Feb 2019 19:42:36 -0800 Subject: [PATCH 09/36] 8218029: [TESTBUG] Use -Djava.class.path= to specify empty -cp in CDS tests Reviewed-by: ccheung, dholmes --- .../SharedArchiveFile/NonBootLoaderClasses.java | 6 +++--- test/hotspot/jtreg/runtime/appcds/TestCommon.java | 5 ++--- .../runtime/appcds/jigsaw/modulepath/AddModules.java | 4 ++-- .../runtime/appcds/jigsaw/modulepath/AddReads.java | 4 ++-- .../appcds/jigsaw/modulepath/ModulePathAndCP.java | 4 ++-- .../appcds/jigsaw/overridetests/OverrideTests.java | 11 +++++------ 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java b/test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java index c66f1ffaf24..8f8bd75b4c3 100644 --- a/test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java +++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,14 +44,14 @@ public class NonBootLoaderClasses { CDSTestUtils.makeClassList(classes).getPath(); String archiveName = "NonBootLoaderClasses.jsa"; CDSOptions opts = (new CDSOptions()) - .addPrefix("-XX:ExtraSharedClassListFile=" + classList, "-cp", "\"\"") + .addPrefix("-XX:ExtraSharedClassListFile=" + classList, "-Djava.class.path=") .setArchiveName(archiveName); CDSTestUtils.createArchiveAndCheck(opts); // Print the shared dictionary and inspect the output opts = (new CDSOptions()) .setUseVersion(false) - .addSuffix( "-cp", "\"\"", + .addSuffix("-Djava.class.path=", "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./" + archiveName, "-XX:+PrintSharedArchiveAndExit", "-XX:+PrintSharedDictionary"); CDSTestUtils.run(opts) diff --git a/test/hotspot/jtreg/runtime/appcds/TestCommon.java b/test/hotspot/jtreg/runtime/appcds/TestCommon.java index 6f9960e5aaa..d1e73c07d52 100644 --- a/test/hotspot/jtreg/runtime/appcds/TestCommon.java +++ b/test/hotspot/jtreg/runtime/appcds/TestCommon.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -123,8 +123,7 @@ public class TestCommon extends CDSTestUtils { cmd.add("-cp"); cmd.add(opts.appJar); } else { - cmd.add("-cp"); - cmd.add("\"\""); + cmd.add("-Djava.class.path="); } cmd.add("-Xshare:dump"); diff --git a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddModules.java b/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddModules.java index 2d1b9db998a..f41d386e2d9 100644 --- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddModules.java +++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddModules.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -107,7 +107,7 @@ public class AddModules { "--add-modules", MAIN_MODULE1 + "," + MAIN_MODULE2); TestCommon.checkDump(output); - String prefix[] = {"-cp", "\"\"", "-Xlog:class+load=trace"}; + String prefix[] = {"-Djava.class.path=", "-Xlog:class+load=trace"}; // run the com.greetings module with the archive with the --module-path // the same as the one during dump time. diff --git a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddReads.java b/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddReads.java index 13d9eb5587c..23788edb7cd 100644 --- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddReads.java +++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/AddReads.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -98,7 +98,7 @@ public class AddReads { "--add-reads", "com.norequires=org.astro", "-m", MAIN_MODULE); TestCommon.checkDump(output); - String prefix[] = {"-cp", "\"\"", "-Xlog:class+load=trace", + String prefix[] = {"-Djava.class.path=", "-Xlog:class+load=trace", "--add-modules", SUB_MODULE, "--add-reads", "com.norequires=org.astro"}; diff --git a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/ModulePathAndCP.java b/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/ModulePathAndCP.java index 38ed1aaf88b..de45692ec52 100644 --- a/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/ModulePathAndCP.java +++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/modulepath/ModulePathAndCP.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -103,7 +103,7 @@ public class ModulePathAndCP { "--module-path", moduleDir.toString(), "-m", MAIN_MODULE); TestCommon.checkDump(output); - String prefix[] = {"-cp", "\"\"", "-Xlog:class+load=trace"}; + String prefix[] = {"-Djava.class.path=", "-Xlog:class+load=trace"}; // run with the archive with the --module-path the same as the one during // dump time. The classes should be loaded from the archive. diff --git a/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/OverrideTests.java b/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/OverrideTests.java index eed9d9fd554..ae274143958 100644 --- a/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/OverrideTests.java +++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/OverrideTests.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -159,11 +159,10 @@ public class OverrideTests { boolean isAppLoader = loaderName.equals("app"); int upgradeModIdx = isAppLoader ? 0 : 1; String expectedException = "java.lang.module.FindException: Unable to compute the hash"; - String prefix[] = new String[4]; - prefix[0] = "-cp"; - prefix[1] = "\"\""; - prefix[2] = "--add-modules"; - prefix[3] = "java.net.http"; + String prefix[] = new String[3]; + prefix[0] = "-Djava.class.path="; + prefix[1] = "--add-modules"; + prefix[2] = "java.net.http"; // Run the test with --upgrade-module-path set to alternate location of archiveClass // The alternate version of archiveClass SHOULD be found. From 67dfadfcc2ef8e10327668fd1516d9faf364309e Mon Sep 17 00:00:00 2001 From: Yasumasa Suenaga Date: Tue, 5 Feb 2019 14:24:29 +0900 Subject: [PATCH 10/36] 8217845: SA should refer const values for JVMFlag from HotSpot Reviewed-by: sspitsyn, jgeorge --- src/hotspot/share/runtime/vmStructs.cpp | 18 ++++++- .../sun/jvm/hotspot/CommandProcessor.java | 6 +-- .../classes/sun/jvm/hotspot/runtime/VM.java | 52 ++++++++++++++++++- .../classes/sun/jvm/hotspot/tools/JInfo.java | 4 +- .../jtreg/serviceability/sa/ClhsdbFlags.java | 2 + 5 files changed, 74 insertions(+), 8 deletions(-) diff --git a/src/hotspot/share/runtime/vmStructs.cpp b/src/hotspot/share/runtime/vmStructs.cpp index 47304c45794..dbab2aaf124 100644 --- a/src/hotspot/share/runtime/vmStructs.cpp +++ b/src/hotspot/share/runtime/vmStructs.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -2565,7 +2565,21 @@ typedef PaddedEnd PaddedObjectMonitor; /****************/ \ /* VMRegImpl */ \ /****************/ \ - declare_constant(VMRegImpl::stack_slot_size) + declare_constant(VMRegImpl::stack_slot_size) \ + \ + /******************************/ \ + /* -XX flags (value origin) */ \ + /******************************/ \ + declare_constant(JVMFlag::DEFAULT) \ + declare_constant(JVMFlag::COMMAND_LINE) \ + declare_constant(JVMFlag::ENVIRON_VAR) \ + declare_constant(JVMFlag::CONFIG_FILE) \ + declare_constant(JVMFlag::MANAGEMENT) \ + declare_constant(JVMFlag::ERGONOMIC) \ + declare_constant(JVMFlag::ATTACH_ON_DEMAND) \ + declare_constant(JVMFlag::INTERNAL) \ + declare_constant(JVMFlag::VALUE_ORIGIN_MASK) \ + declare_constant(JVMFlag::ORIG_COMMAND_LINE) //-------------------------------------------------------------------------------- // VM_LONG_CONSTANTS diff --git a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java index 0ac02e70af6..c8a22d927b3 100644 --- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java +++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -649,11 +649,11 @@ public class CommandProcessor { VM.Flag flag = flags[f]; if (name == null || flag.getName().equals(name)) { - if (nonDefault && flag.getOrigin() == 0) { + if (nonDefault && (flag.getOrigin() == VM.Flags_DEFAULT)) { // only print flags which aren't their defaults continue; } - out.println(flag.getName() + " = " + flag.getValue() + " " + flag.getOrigin()); + out.println(flag.getName() + " = " + flag.getValue() + " " + flag.getOriginString()); printed = true; } } diff --git a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java index 6eae172f5e2..f80960b6df6 100644 --- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java +++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java @@ -105,6 +105,17 @@ public class VM { private int klassPtrSize; private int oopSize; private final int IndexSetSize; + /** -XX flags (value origin) */ + public static int Flags_DEFAULT; + public static int Flags_COMMAND_LINE; + public static int Flags_ENVIRON_VAR; + public static int Flags_CONFIG_FILE; + public static int Flags_MANAGEMENT; + public static int Flags_ERGONOMIC; + public static int Flags_ATTACH_ON_DEMAND; + public static int Flags_INTERNAL; + private static int Flags_VALUE_ORIGIN_MASK; + private static int Flags_ORIG_COMMAND_LINE; /** This is only present in a non-core build */ private CodeCache codeCache; /** This is only present in a C1 build */ @@ -163,7 +174,36 @@ public class VM { } public int getOrigin() { - return flags & 0xF; // XXX can we get the mask bits from somewhere? + return flags & Flags_VALUE_ORIGIN_MASK; + } + + // See JVMFlag::print_origin() in HotSpot + public String getOriginString() { + var origin = flags & Flags_VALUE_ORIGIN_MASK; + if (origin == Flags_DEFAULT) { + return "default"; + } else if (origin == Flags_COMMAND_LINE) { + return "command line"; + } else if (origin == Flags_ENVIRON_VAR) { + return "environment"; + } else if (origin == Flags_CONFIG_FILE) { + return "config file"; + } else if (origin == Flags_MANAGEMENT) { + return "management"; + } else if (origin == Flags_ERGONOMIC) { + String result = ""; + if ((flags & Flags_ORIG_COMMAND_LINE) == Flags_ORIG_COMMAND_LINE) { + result = "command line, "; + } + return result + "ergonomic"; + } else if (origin == Flags_ATTACH_ON_DEMAND) { + return "attach"; + } else if (origin == Flags_INTERNAL) { + return "internal"; + } else { + throw new IllegalStateException( + "Unknown flag origin " + origin + " is detected in " + name); + } } public boolean isBool() { @@ -436,6 +476,16 @@ public class VM { bytesPerLong = db.lookupIntConstant("BytesPerLong").intValue(); bytesPerWord = db.lookupIntConstant("BytesPerWord").intValue(); heapWordSize = db.lookupIntConstant("HeapWordSize").intValue(); + Flags_DEFAULT = db.lookupIntConstant("JVMFlag::DEFAULT").intValue(); + Flags_COMMAND_LINE = db.lookupIntConstant("JVMFlag::COMMAND_LINE").intValue(); + Flags_ENVIRON_VAR = db.lookupIntConstant("JVMFlag::ENVIRON_VAR").intValue(); + Flags_CONFIG_FILE = db.lookupIntConstant("JVMFlag::CONFIG_FILE").intValue(); + Flags_MANAGEMENT = db.lookupIntConstant("JVMFlag::MANAGEMENT").intValue(); + Flags_ERGONOMIC = db.lookupIntConstant("JVMFlag::ERGONOMIC").intValue(); + Flags_ATTACH_ON_DEMAND = db.lookupIntConstant("JVMFlag::ATTACH_ON_DEMAND").intValue(); + Flags_INTERNAL = db.lookupIntConstant("JVMFlag::INTERNAL").intValue(); + Flags_VALUE_ORIGIN_MASK = db.lookupIntConstant("JVMFlag::VALUE_ORIGIN_MASK").intValue(); + Flags_ORIG_COMMAND_LINE = db.lookupIntConstant("JVMFlag::ORIG_COMMAND_LINE").intValue(); oopSize = db.lookupIntConstant("oopSize").intValue(); IndexSetSize = db.lookupIntConstant("CompactibleFreeListSpace::IndexSetSize").intValue(); diff --git a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JInfo.java b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JInfo.java index 3e724b979a0..e44fdf836cf 100644 --- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JInfo.java +++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/JInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -148,7 +148,7 @@ public class JInfo extends Tool { VM.Flag[] flags = VM.getVM().getCommandLineFlags(); System.out.print("Non-default VM flags: "); for (VM.Flag flag : flags) { - if (flag.getOrigin() == 0) { + if (flag.getOrigin() == VM.Flags_DEFAULT) { // only print flags which aren't their defaults continue; } diff --git a/test/hotspot/jtreg/serviceability/sa/ClhsdbFlags.java b/test/hotspot/jtreg/serviceability/sa/ClhsdbFlags.java index ac48b9f9ea2..21c1c6d1922 100644 --- a/test/hotspot/jtreg/serviceability/sa/ClhsdbFlags.java +++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbFlags.java @@ -34,6 +34,7 @@ import jtreg.SkippedException; * @test * @bug 8190198 * @bug 8217612 + * @bug 8217845 * @summary Test clhsdb flags command * @requires vm.hasSA * @library /test/lib @@ -63,6 +64,7 @@ public class ClhsdbFlags { Map> expStrMap = new HashMap<>(); expStrMap.put("flags", List.of( + "command line", "ergonomic", "default", "UnlockDiagnosticVMOptions = true", "MaxFDLimit = false", "MaxJavaStackTraceDepth = 1024", From 791ab38fcd52ce347c14e868b00d8d9d2ef83b11 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Tue, 5 Feb 2019 10:56:12 +0100 Subject: [PATCH 11/36] 8218186: Clean up CLDR generation in build Reviewed-by: erikj --- make/data/cldr/README | 4 ++ .../data/cldr}/common/bcp47/timezone.xml | 0 .../data/cldr}/common/dtd/ldml.dtd | 0 .../data/cldr}/common/dtd/ldmlBCP47.dtd | 0 .../cldr}/common/dtd/ldmlSupplemental.dtd | 0 .../data/cldr}/common/main/af.xml | 0 .../data/cldr}/common/main/af_NA.xml | 0 .../data/cldr}/common/main/af_ZA.xml | 0 .../data/cldr}/common/main/agq.xml | 0 .../data/cldr}/common/main/agq_CM.xml | 0 .../data/cldr}/common/main/ak.xml | 0 .../data/cldr}/common/main/ak_GH.xml | 0 .../data/cldr}/common/main/am.xml | 0 .../data/cldr}/common/main/am_ET.xml | 0 .../data/cldr}/common/main/ar.xml | 0 .../data/cldr}/common/main/ar_001.xml | 0 .../data/cldr}/common/main/ar_AE.xml | 0 .../data/cldr}/common/main/ar_BH.xml | 0 .../data/cldr}/common/main/ar_DJ.xml | 0 .../data/cldr}/common/main/ar_DZ.xml | 0 .../data/cldr}/common/main/ar_EG.xml | 0 .../data/cldr}/common/main/ar_EH.xml | 0 .../data/cldr}/common/main/ar_ER.xml | 0 .../data/cldr}/common/main/ar_IL.xml | 0 .../data/cldr}/common/main/ar_IQ.xml | 0 .../data/cldr}/common/main/ar_JO.xml | 0 .../data/cldr}/common/main/ar_KM.xml | 0 .../data/cldr}/common/main/ar_KW.xml | 0 .../data/cldr}/common/main/ar_LB.xml | 0 .../data/cldr}/common/main/ar_LY.xml | 0 .../data/cldr}/common/main/ar_MA.xml | 0 .../data/cldr}/common/main/ar_MR.xml | 0 .../data/cldr}/common/main/ar_OM.xml | 0 .../data/cldr}/common/main/ar_PS.xml | 0 .../data/cldr}/common/main/ar_QA.xml | 0 .../data/cldr}/common/main/ar_SA.xml | 0 .../data/cldr}/common/main/ar_SD.xml | 0 .../data/cldr}/common/main/ar_SO.xml | 0 .../data/cldr}/common/main/ar_SS.xml | 0 .../data/cldr}/common/main/ar_SY.xml | 0 .../data/cldr}/common/main/ar_TD.xml | 0 .../data/cldr}/common/main/ar_TN.xml | 0 .../data/cldr}/common/main/ar_YE.xml | 0 .../data/cldr}/common/main/as.xml | 0 .../data/cldr}/common/main/as_IN.xml | 0 .../data/cldr}/common/main/asa.xml | 0 .../data/cldr}/common/main/asa_TZ.xml | 0 .../data/cldr}/common/main/ast.xml | 0 .../data/cldr}/common/main/ast_ES.xml | 0 .../data/cldr}/common/main/az.xml | 0 .../data/cldr}/common/main/az_Cyrl.xml | 0 .../data/cldr}/common/main/az_Cyrl_AZ.xml | 0 .../data/cldr}/common/main/az_Latn.xml | 0 .../data/cldr}/common/main/az_Latn_AZ.xml | 0 .../data/cldr}/common/main/bas.xml | 0 .../data/cldr}/common/main/bas_CM.xml | 0 .../data/cldr}/common/main/be.xml | 0 .../data/cldr}/common/main/be_BY.xml | 0 .../data/cldr}/common/main/bem.xml | 0 .../data/cldr}/common/main/bem_ZM.xml | 0 .../data/cldr}/common/main/bez.xml | 0 .../data/cldr}/common/main/bez_TZ.xml | 0 .../data/cldr}/common/main/bg.xml | 0 .../data/cldr}/common/main/bg_BG.xml | 0 .../data/cldr}/common/main/bm.xml | 0 .../data/cldr}/common/main/bm_ML.xml | 0 .../data/cldr}/common/main/bn.xml | 0 .../data/cldr}/common/main/bn_BD.xml | 0 .../data/cldr}/common/main/bn_IN.xml | 0 .../data/cldr}/common/main/bo.xml | 0 .../data/cldr}/common/main/bo_CN.xml | 0 .../data/cldr}/common/main/bo_IN.xml | 0 .../data/cldr}/common/main/br.xml | 0 .../data/cldr}/common/main/br_FR.xml | 0 .../data/cldr}/common/main/brx.xml | 0 .../data/cldr}/common/main/brx_IN.xml | 0 .../data/cldr}/common/main/bs.xml | 0 .../data/cldr}/common/main/bs_Cyrl.xml | 0 .../data/cldr}/common/main/bs_Cyrl_BA.xml | 0 .../data/cldr}/common/main/bs_Latn.xml | 0 .../data/cldr}/common/main/bs_Latn_BA.xml | 0 .../data/cldr}/common/main/ca.xml | 0 .../data/cldr}/common/main/ca_AD.xml | 0 .../data/cldr}/common/main/ca_ES.xml | 0 .../data/cldr}/common/main/ca_ES_VALENCIA.xml | 0 .../data/cldr}/common/main/ca_FR.xml | 0 .../data/cldr}/common/main/ca_IT.xml | 0 .../data/cldr}/common/main/ccp.xml | 0 .../data/cldr}/common/main/ccp_BD.xml | 0 .../data/cldr}/common/main/ccp_IN.xml | 0 .../data/cldr}/common/main/ce.xml | 0 .../data/cldr}/common/main/ce_RU.xml | 0 .../data/cldr}/common/main/cgg.xml | 0 .../data/cldr}/common/main/cgg_UG.xml | 0 .../data/cldr}/common/main/chr.xml | 0 .../data/cldr}/common/main/chr_US.xml | 0 .../data/cldr}/common/main/ckb.xml | 0 .../data/cldr}/common/main/ckb_IQ.xml | 0 .../data/cldr}/common/main/ckb_IR.xml | 0 .../data/cldr}/common/main/cs.xml | 0 .../data/cldr}/common/main/cs_CZ.xml | 0 .../data/cldr}/common/main/cu.xml | 0 .../data/cldr}/common/main/cu_RU.xml | 0 .../data/cldr}/common/main/cy.xml | 0 .../data/cldr}/common/main/cy_GB.xml | 0 .../data/cldr}/common/main/da.xml | 0 .../data/cldr}/common/main/da_DK.xml | 0 .../data/cldr}/common/main/da_GL.xml | 0 .../data/cldr}/common/main/dav.xml | 0 .../data/cldr}/common/main/dav_KE.xml | 0 .../data/cldr}/common/main/de.xml | 0 .../data/cldr}/common/main/de_AT.xml | 0 .../data/cldr}/common/main/de_BE.xml | 0 .../data/cldr}/common/main/de_CH.xml | 0 .../data/cldr}/common/main/de_DE.xml | 0 .../data/cldr}/common/main/de_IT.xml | 0 .../data/cldr}/common/main/de_LI.xml | 0 .../data/cldr}/common/main/de_LU.xml | 0 .../data/cldr}/common/main/dje.xml | 0 .../data/cldr}/common/main/dje_NE.xml | 0 .../data/cldr}/common/main/dsb.xml | 0 .../data/cldr}/common/main/dsb_DE.xml | 0 .../data/cldr}/common/main/dua.xml | 0 .../data/cldr}/common/main/dua_CM.xml | 0 .../data/cldr}/common/main/dyo.xml | 0 .../data/cldr}/common/main/dyo_SN.xml | 0 .../data/cldr}/common/main/dz.xml | 0 .../data/cldr}/common/main/dz_BT.xml | 0 .../data/cldr}/common/main/ebu.xml | 0 .../data/cldr}/common/main/ebu_KE.xml | 0 .../data/cldr}/common/main/ee.xml | 0 .../data/cldr}/common/main/ee_GH.xml | 0 .../data/cldr}/common/main/ee_TG.xml | 0 .../data/cldr}/common/main/el.xml | 0 .../data/cldr}/common/main/el_CY.xml | 0 .../data/cldr}/common/main/el_GR.xml | 0 .../data/cldr}/common/main/en.xml | 0 .../data/cldr}/common/main/en_001.xml | 0 .../data/cldr}/common/main/en_150.xml | 0 .../data/cldr}/common/main/en_AG.xml | 0 .../data/cldr}/common/main/en_AI.xml | 0 .../data/cldr}/common/main/en_AS.xml | 0 .../data/cldr}/common/main/en_AT.xml | 0 .../data/cldr}/common/main/en_AU.xml | 0 .../data/cldr}/common/main/en_BB.xml | 0 .../data/cldr}/common/main/en_BE.xml | 0 .../data/cldr}/common/main/en_BI.xml | 0 .../data/cldr}/common/main/en_BM.xml | 0 .../data/cldr}/common/main/en_BS.xml | 0 .../data/cldr}/common/main/en_BW.xml | 0 .../data/cldr}/common/main/en_BZ.xml | 0 .../data/cldr}/common/main/en_CA.xml | 0 .../data/cldr}/common/main/en_CC.xml | 0 .../data/cldr}/common/main/en_CH.xml | 0 .../data/cldr}/common/main/en_CK.xml | 0 .../data/cldr}/common/main/en_CM.xml | 0 .../data/cldr}/common/main/en_CX.xml | 0 .../data/cldr}/common/main/en_CY.xml | 0 .../data/cldr}/common/main/en_DE.xml | 0 .../data/cldr}/common/main/en_DG.xml | 0 .../data/cldr}/common/main/en_DK.xml | 0 .../data/cldr}/common/main/en_DM.xml | 0 .../data/cldr}/common/main/en_ER.xml | 0 .../data/cldr}/common/main/en_FI.xml | 0 .../data/cldr}/common/main/en_FJ.xml | 0 .../data/cldr}/common/main/en_FK.xml | 0 .../data/cldr}/common/main/en_FM.xml | 0 .../data/cldr}/common/main/en_GB.xml | 0 .../data/cldr}/common/main/en_GD.xml | 0 .../data/cldr}/common/main/en_GG.xml | 0 .../data/cldr}/common/main/en_GH.xml | 0 .../data/cldr}/common/main/en_GI.xml | 0 .../data/cldr}/common/main/en_GM.xml | 0 .../data/cldr}/common/main/en_GU.xml | 0 .../data/cldr}/common/main/en_GY.xml | 0 .../data/cldr}/common/main/en_HK.xml | 0 .../data/cldr}/common/main/en_IE.xml | 0 .../data/cldr}/common/main/en_IL.xml | 0 .../data/cldr}/common/main/en_IM.xml | 0 .../data/cldr}/common/main/en_IN.xml | 0 .../data/cldr}/common/main/en_IO.xml | 0 .../data/cldr}/common/main/en_JE.xml | 0 .../data/cldr}/common/main/en_JM.xml | 0 .../data/cldr}/common/main/en_KE.xml | 0 .../data/cldr}/common/main/en_KI.xml | 0 .../data/cldr}/common/main/en_KN.xml | 0 .../data/cldr}/common/main/en_KY.xml | 0 .../data/cldr}/common/main/en_LC.xml | 0 .../data/cldr}/common/main/en_LR.xml | 0 .../data/cldr}/common/main/en_LS.xml | 0 .../data/cldr}/common/main/en_MG.xml | 0 .../data/cldr}/common/main/en_MH.xml | 0 .../data/cldr}/common/main/en_MO.xml | 0 .../data/cldr}/common/main/en_MP.xml | 0 .../data/cldr}/common/main/en_MS.xml | 0 .../data/cldr}/common/main/en_MT.xml | 0 .../data/cldr}/common/main/en_MU.xml | 0 .../data/cldr}/common/main/en_MW.xml | 0 .../data/cldr}/common/main/en_MY.xml | 0 .../data/cldr}/common/main/en_NA.xml | 0 .../data/cldr}/common/main/en_NF.xml | 0 .../data/cldr}/common/main/en_NG.xml | 0 .../data/cldr}/common/main/en_NL.xml | 0 .../data/cldr}/common/main/en_NR.xml | 0 .../data/cldr}/common/main/en_NU.xml | 0 .../data/cldr}/common/main/en_NZ.xml | 0 .../data/cldr}/common/main/en_PG.xml | 0 .../data/cldr}/common/main/en_PH.xml | 0 .../data/cldr}/common/main/en_PK.xml | 0 .../data/cldr}/common/main/en_PN.xml | 0 .../data/cldr}/common/main/en_PR.xml | 0 .../data/cldr}/common/main/en_PW.xml | 0 .../data/cldr}/common/main/en_RW.xml | 0 .../data/cldr}/common/main/en_SB.xml | 0 .../data/cldr}/common/main/en_SC.xml | 0 .../data/cldr}/common/main/en_SD.xml | 0 .../data/cldr}/common/main/en_SE.xml | 0 .../data/cldr}/common/main/en_SG.xml | 0 .../data/cldr}/common/main/en_SH.xml | 0 .../data/cldr}/common/main/en_SI.xml | 0 .../data/cldr}/common/main/en_SL.xml | 0 .../data/cldr}/common/main/en_SS.xml | 0 .../data/cldr}/common/main/en_SX.xml | 0 .../data/cldr}/common/main/en_SZ.xml | 0 .../data/cldr}/common/main/en_TC.xml | 0 .../data/cldr}/common/main/en_TK.xml | 0 .../data/cldr}/common/main/en_TO.xml | 0 .../data/cldr}/common/main/en_TT.xml | 0 .../data/cldr}/common/main/en_TV.xml | 0 .../data/cldr}/common/main/en_TZ.xml | 0 .../data/cldr}/common/main/en_UG.xml | 0 .../data/cldr}/common/main/en_UM.xml | 0 .../data/cldr}/common/main/en_US.xml | 0 .../data/cldr}/common/main/en_US_POSIX.xml | 0 .../data/cldr}/common/main/en_VC.xml | 0 .../data/cldr}/common/main/en_VG.xml | 0 .../data/cldr}/common/main/en_VI.xml | 0 .../data/cldr}/common/main/en_VU.xml | 0 .../data/cldr}/common/main/en_WS.xml | 0 .../data/cldr}/common/main/en_ZA.xml | 0 .../data/cldr}/common/main/en_ZM.xml | 0 .../data/cldr}/common/main/en_ZW.xml | 0 .../data/cldr}/common/main/eo.xml | 0 .../data/cldr}/common/main/eo_001.xml | 0 .../data/cldr}/common/main/es.xml | 0 .../data/cldr}/common/main/es_419.xml | 0 .../data/cldr}/common/main/es_AR.xml | 0 .../data/cldr}/common/main/es_BO.xml | 0 .../data/cldr}/common/main/es_BR.xml | 0 .../data/cldr}/common/main/es_BZ.xml | 0 .../data/cldr}/common/main/es_CL.xml | 0 .../data/cldr}/common/main/es_CO.xml | 0 .../data/cldr}/common/main/es_CR.xml | 0 .../data/cldr}/common/main/es_CU.xml | 0 .../data/cldr}/common/main/es_DO.xml | 0 .../data/cldr}/common/main/es_EA.xml | 0 .../data/cldr}/common/main/es_EC.xml | 0 .../data/cldr}/common/main/es_ES.xml | 0 .../data/cldr}/common/main/es_GQ.xml | 0 .../data/cldr}/common/main/es_GT.xml | 0 .../data/cldr}/common/main/es_HN.xml | 0 .../data/cldr}/common/main/es_IC.xml | 0 .../data/cldr}/common/main/es_MX.xml | 0 .../data/cldr}/common/main/es_NI.xml | 0 .../data/cldr}/common/main/es_PA.xml | 0 .../data/cldr}/common/main/es_PE.xml | 0 .../data/cldr}/common/main/es_PH.xml | 0 .../data/cldr}/common/main/es_PR.xml | 0 .../data/cldr}/common/main/es_PY.xml | 0 .../data/cldr}/common/main/es_SV.xml | 0 .../data/cldr}/common/main/es_US.xml | 0 .../data/cldr}/common/main/es_UY.xml | 0 .../data/cldr}/common/main/es_VE.xml | 0 .../data/cldr}/common/main/et.xml | 0 .../data/cldr}/common/main/et_EE.xml | 0 .../data/cldr}/common/main/eu.xml | 0 .../data/cldr}/common/main/eu_ES.xml | 0 .../data/cldr}/common/main/ewo.xml | 0 .../data/cldr}/common/main/ewo_CM.xml | 0 .../data/cldr}/common/main/fa.xml | 0 .../data/cldr}/common/main/fa_AF.xml | 0 .../data/cldr}/common/main/fa_IR.xml | 0 .../data/cldr}/common/main/ff.xml | 0 .../data/cldr}/common/main/ff_CM.xml | 0 .../data/cldr}/common/main/ff_GN.xml | 0 .../data/cldr}/common/main/ff_MR.xml | 0 .../data/cldr}/common/main/ff_SN.xml | 0 .../data/cldr}/common/main/fi.xml | 0 .../data/cldr}/common/main/fi_FI.xml | 0 .../data/cldr}/common/main/fil.xml | 0 .../data/cldr}/common/main/fil_PH.xml | 0 .../data/cldr}/common/main/fo.xml | 0 .../data/cldr}/common/main/fo_DK.xml | 0 .../data/cldr}/common/main/fo_FO.xml | 0 .../data/cldr}/common/main/fr.xml | 0 .../data/cldr}/common/main/fr_BE.xml | 0 .../data/cldr}/common/main/fr_BF.xml | 0 .../data/cldr}/common/main/fr_BI.xml | 0 .../data/cldr}/common/main/fr_BJ.xml | 0 .../data/cldr}/common/main/fr_BL.xml | 0 .../data/cldr}/common/main/fr_CA.xml | 0 .../data/cldr}/common/main/fr_CD.xml | 0 .../data/cldr}/common/main/fr_CF.xml | 0 .../data/cldr}/common/main/fr_CG.xml | 0 .../data/cldr}/common/main/fr_CH.xml | 0 .../data/cldr}/common/main/fr_CI.xml | 0 .../data/cldr}/common/main/fr_CM.xml | 0 .../data/cldr}/common/main/fr_DJ.xml | 0 .../data/cldr}/common/main/fr_DZ.xml | 0 .../data/cldr}/common/main/fr_FR.xml | 0 .../data/cldr}/common/main/fr_GA.xml | 0 .../data/cldr}/common/main/fr_GF.xml | 0 .../data/cldr}/common/main/fr_GN.xml | 0 .../data/cldr}/common/main/fr_GP.xml | 0 .../data/cldr}/common/main/fr_GQ.xml | 0 .../data/cldr}/common/main/fr_HT.xml | 0 .../data/cldr}/common/main/fr_KM.xml | 0 .../data/cldr}/common/main/fr_LU.xml | 0 .../data/cldr}/common/main/fr_MA.xml | 0 .../data/cldr}/common/main/fr_MC.xml | 0 .../data/cldr}/common/main/fr_MF.xml | 0 .../data/cldr}/common/main/fr_MG.xml | 0 .../data/cldr}/common/main/fr_ML.xml | 0 .../data/cldr}/common/main/fr_MQ.xml | 0 .../data/cldr}/common/main/fr_MR.xml | 0 .../data/cldr}/common/main/fr_MU.xml | 0 .../data/cldr}/common/main/fr_NC.xml | 0 .../data/cldr}/common/main/fr_NE.xml | 0 .../data/cldr}/common/main/fr_PF.xml | 0 .../data/cldr}/common/main/fr_PM.xml | 0 .../data/cldr}/common/main/fr_RE.xml | 0 .../data/cldr}/common/main/fr_RW.xml | 0 .../data/cldr}/common/main/fr_SC.xml | 0 .../data/cldr}/common/main/fr_SN.xml | 0 .../data/cldr}/common/main/fr_SY.xml | 0 .../data/cldr}/common/main/fr_TD.xml | 0 .../data/cldr}/common/main/fr_TG.xml | 0 .../data/cldr}/common/main/fr_TN.xml | 0 .../data/cldr}/common/main/fr_VU.xml | 0 .../data/cldr}/common/main/fr_WF.xml | 0 .../data/cldr}/common/main/fr_YT.xml | 0 .../data/cldr}/common/main/fur.xml | 0 .../data/cldr}/common/main/fur_IT.xml | 0 .../data/cldr}/common/main/fy.xml | 0 .../data/cldr}/common/main/fy_NL.xml | 0 .../data/cldr}/common/main/ga.xml | 0 .../data/cldr}/common/main/ga_IE.xml | 0 .../data/cldr}/common/main/gd.xml | 0 .../data/cldr}/common/main/gd_GB.xml | 0 .../data/cldr}/common/main/gl.xml | 0 .../data/cldr}/common/main/gl_ES.xml | 0 .../data/cldr}/common/main/gsw.xml | 0 .../data/cldr}/common/main/gsw_CH.xml | 0 .../data/cldr}/common/main/gsw_FR.xml | 0 .../data/cldr}/common/main/gsw_LI.xml | 0 .../data/cldr}/common/main/gu.xml | 0 .../data/cldr}/common/main/gu_IN.xml | 0 .../data/cldr}/common/main/guz.xml | 0 .../data/cldr}/common/main/guz_KE.xml | 0 .../data/cldr}/common/main/gv.xml | 0 .../data/cldr}/common/main/gv_IM.xml | 0 .../data/cldr}/common/main/ha.xml | 0 .../data/cldr}/common/main/ha_GH.xml | 0 .../data/cldr}/common/main/ha_NE.xml | 0 .../data/cldr}/common/main/ha_NG.xml | 0 .../data/cldr}/common/main/haw.xml | 0 .../data/cldr}/common/main/haw_US.xml | 0 .../data/cldr}/common/main/he.xml | 0 .../data/cldr}/common/main/he_IL.xml | 0 .../data/cldr}/common/main/hi.xml | 0 .../data/cldr}/common/main/hi_IN.xml | 0 .../data/cldr}/common/main/hr.xml | 0 .../data/cldr}/common/main/hr_BA.xml | 0 .../data/cldr}/common/main/hr_HR.xml | 0 .../data/cldr}/common/main/hsb.xml | 0 .../data/cldr}/common/main/hsb_DE.xml | 0 .../data/cldr}/common/main/hu.xml | 0 .../data/cldr}/common/main/hu_HU.xml | 0 .../data/cldr}/common/main/hy.xml | 0 .../data/cldr}/common/main/hy_AM.xml | 0 .../data/cldr}/common/main/id.xml | 0 .../data/cldr}/common/main/id_ID.xml | 0 .../data/cldr}/common/main/ig.xml | 0 .../data/cldr}/common/main/ig_NG.xml | 0 .../data/cldr}/common/main/ii.xml | 0 .../data/cldr}/common/main/ii_CN.xml | 0 .../data/cldr}/common/main/is.xml | 0 .../data/cldr}/common/main/is_IS.xml | 0 .../data/cldr}/common/main/it.xml | 0 .../data/cldr}/common/main/it_CH.xml | 0 .../data/cldr}/common/main/it_IT.xml | 0 .../data/cldr}/common/main/it_SM.xml | 0 .../data/cldr}/common/main/it_VA.xml | 0 .../data/cldr}/common/main/ja.xml | 0 .../data/cldr}/common/main/ja_JP.xml | 0 .../data/cldr}/common/main/jgo.xml | 0 .../data/cldr}/common/main/jgo_CM.xml | 0 .../data/cldr}/common/main/jmc.xml | 0 .../data/cldr}/common/main/jmc_TZ.xml | 0 .../data/cldr}/common/main/ka.xml | 0 .../data/cldr}/common/main/ka_GE.xml | 0 .../data/cldr}/common/main/kab.xml | 0 .../data/cldr}/common/main/kab_DZ.xml | 0 .../data/cldr}/common/main/kam.xml | 0 .../data/cldr}/common/main/kam_KE.xml | 0 .../data/cldr}/common/main/kde.xml | 0 .../data/cldr}/common/main/kde_TZ.xml | 0 .../data/cldr}/common/main/kea.xml | 0 .../data/cldr}/common/main/kea_CV.xml | 0 .../data/cldr}/common/main/khq.xml | 0 .../data/cldr}/common/main/khq_ML.xml | 0 .../data/cldr}/common/main/ki.xml | 0 .../data/cldr}/common/main/ki_KE.xml | 0 .../data/cldr}/common/main/kk.xml | 0 .../data/cldr}/common/main/kk_KZ.xml | 0 .../data/cldr}/common/main/kkj.xml | 0 .../data/cldr}/common/main/kkj_CM.xml | 0 .../data/cldr}/common/main/kl.xml | 0 .../data/cldr}/common/main/kl_GL.xml | 0 .../data/cldr}/common/main/kln.xml | 0 .../data/cldr}/common/main/kln_KE.xml | 0 .../data/cldr}/common/main/km.xml | 0 .../data/cldr}/common/main/km_KH.xml | 0 .../data/cldr}/common/main/kn.xml | 0 .../data/cldr}/common/main/kn_IN.xml | 0 .../data/cldr}/common/main/ko.xml | 0 .../data/cldr}/common/main/ko_KP.xml | 0 .../data/cldr}/common/main/ko_KR.xml | 0 .../data/cldr}/common/main/kok.xml | 0 .../data/cldr}/common/main/kok_IN.xml | 0 .../data/cldr}/common/main/ks.xml | 0 .../data/cldr}/common/main/ks_IN.xml | 0 .../data/cldr}/common/main/ksb.xml | 0 .../data/cldr}/common/main/ksb_TZ.xml | 0 .../data/cldr}/common/main/ksf.xml | 0 .../data/cldr}/common/main/ksf_CM.xml | 0 .../data/cldr}/common/main/ksh.xml | 0 .../data/cldr}/common/main/ksh_DE.xml | 0 .../data/cldr}/common/main/kw.xml | 0 .../data/cldr}/common/main/kw_GB.xml | 0 .../data/cldr}/common/main/ky.xml | 0 .../data/cldr}/common/main/ky_KG.xml | 0 .../data/cldr}/common/main/lag.xml | 0 .../data/cldr}/common/main/lag_TZ.xml | 0 .../data/cldr}/common/main/lb.xml | 0 .../data/cldr}/common/main/lb_LU.xml | 0 .../data/cldr}/common/main/lg.xml | 0 .../data/cldr}/common/main/lg_UG.xml | 0 .../data/cldr}/common/main/lkt.xml | 0 .../data/cldr}/common/main/lkt_US.xml | 0 .../data/cldr}/common/main/ln.xml | 0 .../data/cldr}/common/main/ln_AO.xml | 0 .../data/cldr}/common/main/ln_CD.xml | 0 .../data/cldr}/common/main/ln_CF.xml | 0 .../data/cldr}/common/main/ln_CG.xml | 0 .../data/cldr}/common/main/lo.xml | 0 .../data/cldr}/common/main/lo_LA.xml | 0 .../data/cldr}/common/main/lrc.xml | 0 .../data/cldr}/common/main/lrc_IQ.xml | 0 .../data/cldr}/common/main/lrc_IR.xml | 0 .../data/cldr}/common/main/lt.xml | 0 .../data/cldr}/common/main/lt_LT.xml | 0 .../data/cldr}/common/main/lu.xml | 0 .../data/cldr}/common/main/lu_CD.xml | 0 .../data/cldr}/common/main/luo.xml | 0 .../data/cldr}/common/main/luo_KE.xml | 0 .../data/cldr}/common/main/luy.xml | 0 .../data/cldr}/common/main/luy_KE.xml | 0 .../data/cldr}/common/main/lv.xml | 0 .../data/cldr}/common/main/lv_LV.xml | 0 .../data/cldr}/common/main/mas.xml | 0 .../data/cldr}/common/main/mas_KE.xml | 0 .../data/cldr}/common/main/mas_TZ.xml | 0 .../data/cldr}/common/main/mer.xml | 0 .../data/cldr}/common/main/mer_KE.xml | 0 .../data/cldr}/common/main/mfe.xml | 0 .../data/cldr}/common/main/mfe_MU.xml | 0 .../data/cldr}/common/main/mg.xml | 0 .../data/cldr}/common/main/mg_MG.xml | 0 .../data/cldr}/common/main/mgh.xml | 0 .../data/cldr}/common/main/mgh_MZ.xml | 0 .../data/cldr}/common/main/mgo.xml | 0 .../data/cldr}/common/main/mgo_CM.xml | 0 .../data/cldr}/common/main/mk.xml | 0 .../data/cldr}/common/main/mk_MK.xml | 0 .../data/cldr}/common/main/ml.xml | 0 .../data/cldr}/common/main/ml_IN.xml | 0 .../data/cldr}/common/main/mn.xml | 0 .../data/cldr}/common/main/mn_MN.xml | 0 .../data/cldr}/common/main/mr.xml | 0 .../data/cldr}/common/main/mr_IN.xml | 0 .../data/cldr}/common/main/ms.xml | 0 .../data/cldr}/common/main/ms_BN.xml | 0 .../data/cldr}/common/main/ms_MY.xml | 0 .../data/cldr}/common/main/ms_SG.xml | 0 .../data/cldr}/common/main/mt.xml | 0 .../data/cldr}/common/main/mt_MT.xml | 0 .../data/cldr}/common/main/mua.xml | 0 .../data/cldr}/common/main/mua_CM.xml | 0 .../data/cldr}/common/main/my.xml | 0 .../data/cldr}/common/main/my_MM.xml | 0 .../data/cldr}/common/main/mzn.xml | 0 .../data/cldr}/common/main/mzn_IR.xml | 0 .../data/cldr}/common/main/naq.xml | 0 .../data/cldr}/common/main/naq_NA.xml | 0 .../data/cldr}/common/main/nb.xml | 0 .../data/cldr}/common/main/nb_NO.xml | 0 .../data/cldr}/common/main/nb_SJ.xml | 0 .../data/cldr}/common/main/nd.xml | 0 .../data/cldr}/common/main/nd_ZW.xml | 0 .../data/cldr}/common/main/nds.xml | 0 .../data/cldr}/common/main/nds_DE.xml | 0 .../data/cldr}/common/main/nds_NL.xml | 0 .../data/cldr}/common/main/ne.xml | 0 .../data/cldr}/common/main/ne_IN.xml | 0 .../data/cldr}/common/main/ne_NP.xml | 0 .../data/cldr}/common/main/nl.xml | 0 .../data/cldr}/common/main/nl_AW.xml | 0 .../data/cldr}/common/main/nl_BE.xml | 0 .../data/cldr}/common/main/nl_BQ.xml | 0 .../data/cldr}/common/main/nl_CW.xml | 0 .../data/cldr}/common/main/nl_NL.xml | 0 .../data/cldr}/common/main/nl_SR.xml | 0 .../data/cldr}/common/main/nl_SX.xml | 0 .../data/cldr}/common/main/nmg.xml | 0 .../data/cldr}/common/main/nmg_CM.xml | 0 .../data/cldr}/common/main/nn.xml | 0 .../data/cldr}/common/main/nn_NO.xml | 0 .../data/cldr}/common/main/nnh.xml | 0 .../data/cldr}/common/main/nnh_CM.xml | 0 .../data/cldr}/common/main/nus.xml | 0 .../data/cldr}/common/main/nus_SS.xml | 0 .../data/cldr}/common/main/nyn.xml | 0 .../data/cldr}/common/main/nyn_UG.xml | 0 .../data/cldr}/common/main/om.xml | 0 .../data/cldr}/common/main/om_ET.xml | 0 .../data/cldr}/common/main/om_KE.xml | 0 .../data/cldr}/common/main/or.xml | 0 .../data/cldr}/common/main/or_IN.xml | 0 .../data/cldr}/common/main/os.xml | 0 .../data/cldr}/common/main/os_GE.xml | 0 .../data/cldr}/common/main/os_RU.xml | 0 .../data/cldr}/common/main/pa.xml | 0 .../data/cldr}/common/main/pa_Arab.xml | 0 .../data/cldr}/common/main/pa_Arab_PK.xml | 0 .../data/cldr}/common/main/pa_Guru.xml | 0 .../data/cldr}/common/main/pa_Guru_IN.xml | 0 .../data/cldr}/common/main/pl.xml | 0 .../data/cldr}/common/main/pl_PL.xml | 0 .../data/cldr}/common/main/prg.xml | 0 .../data/cldr}/common/main/prg_001.xml | 0 .../data/cldr}/common/main/ps.xml | 0 .../data/cldr}/common/main/ps_AF.xml | 0 .../data/cldr}/common/main/pt.xml | 0 .../data/cldr}/common/main/pt_AO.xml | 0 .../data/cldr}/common/main/pt_BR.xml | 0 .../data/cldr}/common/main/pt_CH.xml | 0 .../data/cldr}/common/main/pt_CV.xml | 0 .../data/cldr}/common/main/pt_GQ.xml | 0 .../data/cldr}/common/main/pt_GW.xml | 0 .../data/cldr}/common/main/pt_LU.xml | 0 .../data/cldr}/common/main/pt_MO.xml | 0 .../data/cldr}/common/main/pt_MZ.xml | 0 .../data/cldr}/common/main/pt_PT.xml | 0 .../data/cldr}/common/main/pt_ST.xml | 0 .../data/cldr}/common/main/pt_TL.xml | 0 .../data/cldr}/common/main/qu.xml | 0 .../data/cldr}/common/main/qu_BO.xml | 0 .../data/cldr}/common/main/qu_EC.xml | 0 .../data/cldr}/common/main/qu_PE.xml | 0 .../data/cldr}/common/main/rm.xml | 0 .../data/cldr}/common/main/rm_CH.xml | 0 .../data/cldr}/common/main/rn.xml | 0 .../data/cldr}/common/main/rn_BI.xml | 0 .../data/cldr}/common/main/ro.xml | 0 .../data/cldr}/common/main/ro_MD.xml | 0 .../data/cldr}/common/main/ro_RO.xml | 0 .../data/cldr}/common/main/rof.xml | 0 .../data/cldr}/common/main/rof_TZ.xml | 0 .../data/cldr}/common/main/root.xml | 0 .../data/cldr}/common/main/ru.xml | 0 .../data/cldr}/common/main/ru_BY.xml | 0 .../data/cldr}/common/main/ru_KG.xml | 0 .../data/cldr}/common/main/ru_KZ.xml | 0 .../data/cldr}/common/main/ru_MD.xml | 0 .../data/cldr}/common/main/ru_RU.xml | 0 .../data/cldr}/common/main/ru_UA.xml | 0 .../data/cldr}/common/main/rw.xml | 0 .../data/cldr}/common/main/rw_RW.xml | 0 .../data/cldr}/common/main/rwk.xml | 0 .../data/cldr}/common/main/rwk_TZ.xml | 0 .../data/cldr}/common/main/sah.xml | 0 .../data/cldr}/common/main/sah_RU.xml | 0 .../data/cldr}/common/main/saq.xml | 0 .../data/cldr}/common/main/saq_KE.xml | 0 .../data/cldr}/common/main/sbp.xml | 0 .../data/cldr}/common/main/sbp_TZ.xml | 0 .../data/cldr}/common/main/sd.xml | 0 .../data/cldr}/common/main/sd_PK.xml | 0 .../data/cldr}/common/main/se.xml | 0 .../data/cldr}/common/main/se_FI.xml | 0 .../data/cldr}/common/main/se_NO.xml | 0 .../data/cldr}/common/main/se_SE.xml | 0 .../data/cldr}/common/main/seh.xml | 0 .../data/cldr}/common/main/seh_MZ.xml | 0 .../data/cldr}/common/main/ses.xml | 0 .../data/cldr}/common/main/ses_ML.xml | 0 .../data/cldr}/common/main/sg.xml | 0 .../data/cldr}/common/main/sg_CF.xml | 0 .../data/cldr}/common/main/shi.xml | 0 .../data/cldr}/common/main/shi_Latn.xml | 0 .../data/cldr}/common/main/shi_Latn_MA.xml | 0 .../data/cldr}/common/main/shi_Tfng.xml | 0 .../data/cldr}/common/main/shi_Tfng_MA.xml | 0 .../data/cldr}/common/main/si.xml | 0 .../data/cldr}/common/main/si_LK.xml | 0 .../data/cldr}/common/main/sk.xml | 0 .../data/cldr}/common/main/sk_SK.xml | 0 .../data/cldr}/common/main/sl.xml | 0 .../data/cldr}/common/main/sl_SI.xml | 0 .../data/cldr}/common/main/smn.xml | 0 .../data/cldr}/common/main/smn_FI.xml | 0 .../data/cldr}/common/main/sn.xml | 0 .../data/cldr}/common/main/sn_ZW.xml | 0 .../data/cldr}/common/main/so.xml | 0 .../data/cldr}/common/main/so_DJ.xml | 0 .../data/cldr}/common/main/so_ET.xml | 0 .../data/cldr}/common/main/so_KE.xml | 0 .../data/cldr}/common/main/so_SO.xml | 0 .../data/cldr}/common/main/sq.xml | 0 .../data/cldr}/common/main/sq_AL.xml | 0 .../data/cldr}/common/main/sq_MK.xml | 0 .../data/cldr}/common/main/sq_XK.xml | 0 .../data/cldr}/common/main/sr.xml | 0 .../data/cldr}/common/main/sr_Cyrl.xml | 0 .../data/cldr}/common/main/sr_Cyrl_BA.xml | 0 .../data/cldr}/common/main/sr_Cyrl_ME.xml | 0 .../data/cldr}/common/main/sr_Cyrl_RS.xml | 0 .../data/cldr}/common/main/sr_Cyrl_XK.xml | 0 .../data/cldr}/common/main/sr_Latn.xml | 0 .../data/cldr}/common/main/sr_Latn_BA.xml | 0 .../data/cldr}/common/main/sr_Latn_ME.xml | 0 .../data/cldr}/common/main/sr_Latn_RS.xml | 0 .../data/cldr}/common/main/sr_Latn_XK.xml | 0 .../data/cldr}/common/main/sv.xml | 0 .../data/cldr}/common/main/sv_AX.xml | 0 .../data/cldr}/common/main/sv_FI.xml | 0 .../data/cldr}/common/main/sv_SE.xml | 0 .../data/cldr}/common/main/sw.xml | 0 .../data/cldr}/common/main/sw_CD.xml | 0 .../data/cldr}/common/main/sw_KE.xml | 0 .../data/cldr}/common/main/sw_TZ.xml | 0 .../data/cldr}/common/main/sw_UG.xml | 0 .../data/cldr}/common/main/ta.xml | 0 .../data/cldr}/common/main/ta_IN.xml | 0 .../data/cldr}/common/main/ta_LK.xml | 0 .../data/cldr}/common/main/ta_MY.xml | 0 .../data/cldr}/common/main/ta_SG.xml | 0 .../data/cldr}/common/main/te.xml | 0 .../data/cldr}/common/main/te_IN.xml | 0 .../data/cldr}/common/main/teo.xml | 0 .../data/cldr}/common/main/teo_KE.xml | 0 .../data/cldr}/common/main/teo_UG.xml | 0 .../data/cldr}/common/main/tg.xml | 0 .../data/cldr}/common/main/tg_TJ.xml | 0 .../data/cldr}/common/main/th.xml | 0 .../data/cldr}/common/main/th_TH.xml | 0 .../data/cldr}/common/main/ti.xml | 0 .../data/cldr}/common/main/ti_ER.xml | 0 .../data/cldr}/common/main/ti_ET.xml | 0 .../data/cldr}/common/main/tk.xml | 0 .../data/cldr}/common/main/tk_TM.xml | 0 .../data/cldr}/common/main/to.xml | 0 .../data/cldr}/common/main/to_TO.xml | 0 .../data/cldr}/common/main/tr.xml | 0 .../data/cldr}/common/main/tr_CY.xml | 0 .../data/cldr}/common/main/tr_TR.xml | 0 .../data/cldr}/common/main/tt.xml | 0 .../data/cldr}/common/main/tt_RU.xml | 0 .../data/cldr}/common/main/twq.xml | 0 .../data/cldr}/common/main/twq_NE.xml | 0 .../data/cldr}/common/main/tzm.xml | 0 .../data/cldr}/common/main/tzm_MA.xml | 0 .../data/cldr}/common/main/ug.xml | 0 .../data/cldr}/common/main/ug_CN.xml | 0 .../data/cldr}/common/main/uk.xml | 0 .../data/cldr}/common/main/uk_UA.xml | 0 .../data/cldr}/common/main/ur.xml | 0 .../data/cldr}/common/main/ur_IN.xml | 0 .../data/cldr}/common/main/ur_PK.xml | 0 .../data/cldr}/common/main/uz.xml | 0 .../data/cldr}/common/main/uz_Arab.xml | 0 .../data/cldr}/common/main/uz_Arab_AF.xml | 0 .../data/cldr}/common/main/uz_Cyrl.xml | 0 .../data/cldr}/common/main/uz_Cyrl_UZ.xml | 0 .../data/cldr}/common/main/uz_Latn.xml | 0 .../data/cldr}/common/main/uz_Latn_UZ.xml | 0 .../data/cldr}/common/main/vai.xml | 0 .../data/cldr}/common/main/vai_Latn.xml | 0 .../data/cldr}/common/main/vai_Latn_LR.xml | 0 .../data/cldr}/common/main/vai_Vaii.xml | 0 .../data/cldr}/common/main/vai_Vaii_LR.xml | 0 .../data/cldr}/common/main/vi.xml | 0 .../data/cldr}/common/main/vi_VN.xml | 0 .../data/cldr}/common/main/vo.xml | 0 .../data/cldr}/common/main/vo_001.xml | 0 .../data/cldr}/common/main/vun.xml | 0 .../data/cldr}/common/main/vun_TZ.xml | 0 .../data/cldr}/common/main/wae.xml | 0 .../data/cldr}/common/main/wae_CH.xml | 0 .../data/cldr}/common/main/wo.xml | 0 .../data/cldr}/common/main/wo_SN.xml | 0 .../data/cldr}/common/main/xog.xml | 0 .../data/cldr}/common/main/xog_UG.xml | 0 .../data/cldr}/common/main/yav.xml | 0 .../data/cldr}/common/main/yav_CM.xml | 0 .../data/cldr}/common/main/yi.xml | 0 .../data/cldr}/common/main/yi_001.xml | 0 .../data/cldr}/common/main/yo.xml | 0 .../data/cldr}/common/main/yo_BJ.xml | 0 .../data/cldr}/common/main/yo_NG.xml | 0 .../data/cldr}/common/main/yue.xml | 0 .../data/cldr}/common/main/yue_HK.xml | 0 .../data/cldr}/common/main/yue_Hans.xml | 0 .../data/cldr}/common/main/yue_Hans_CN.xml | 0 .../data/cldr}/common/main/yue_Hant.xml | 0 .../data/cldr}/common/main/yue_Hant_HK.xml | 0 .../data/cldr}/common/main/zgh.xml | 0 .../data/cldr}/common/main/zgh_MA.xml | 0 .../data/cldr}/common/main/zh.xml | 0 .../data/cldr}/common/main/zh_Hans.xml | 0 .../data/cldr}/common/main/zh_Hans_CN.xml | 0 .../data/cldr}/common/main/zh_Hans_HK.xml | 0 .../data/cldr}/common/main/zh_Hans_MO.xml | 0 .../data/cldr}/common/main/zh_Hans_SG.xml | 0 .../data/cldr}/common/main/zh_Hant.xml | 0 .../data/cldr}/common/main/zh_Hant_HK.xml | 0 .../data/cldr}/common/main/zh_Hant_MO.xml | 0 .../data/cldr}/common/main/zh_Hant_TW.xml | 0 .../data/cldr}/common/main/zu.xml | 0 .../data/cldr}/common/main/zu_ZA.xml | 0 .../supplemental/attributeValueValidity.xml | 0 .../cldr}/common/supplemental/characters.xml | 0 .../common/supplemental/coverageLevels.xml | 0 .../cldr}/common/supplemental/dayPeriods.xml | 0 .../cldr}/common/supplemental/genderList.xml | 0 .../common/supplemental/languageInfo.xml | 0 .../common/supplemental/likelySubtags.xml | 0 .../cldr}/common/supplemental/metaZones.xml | 0 .../common/supplemental/numberingSystems.xml | 0 .../cldr}/common/supplemental/ordinals.xml | 0 .../common/supplemental/pluralRanges.xml | 0 .../cldr}/common/supplemental/plurals.xml | 0 .../cldr}/common/supplemental/rgScope.xml | 0 .../common/supplemental/subdivisions.xml | 0 .../common/supplemental/supplementalData.xml | 0 .../supplemental/supplementalMetadata.xml | 0 .../common/supplemental/telephoneCodeData.xml | 0 .../common/supplemental/windowsZones.xml | 0 .../data/cldr}/unicode-license.txt | 0 make/gensrc/Gensrc-java.base.gmk | 30 +++++++- make/gensrc/Gensrc-jdk.localedata.gmk | 23 +++++- make/gensrc/GensrcCLDR.gmk | 71 ------------------- 763 files changed, 53 insertions(+), 75 deletions(-) create mode 100644 make/data/cldr/README rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/bcp47/timezone.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/dtd/ldml.dtd (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/dtd/ldmlBCP47.dtd (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/dtd/ldmlSupplemental.dtd (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/af.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/af_NA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/af_ZA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/agq.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/agq_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ak.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ak_GH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/am.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/am_ET.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_001.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_AE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_BH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_DJ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_DZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_EG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_EH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_ER.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_IL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_IQ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_JO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_KM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_KW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_LB.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_LY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_MA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_MR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_OM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_PS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_QA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_SA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_SD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_SO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_SS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_SY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_TD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_TN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ar_YE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/as.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/as_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/asa.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/asa_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ast.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ast_ES.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/az.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/az_Cyrl.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/az_Cyrl_AZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/az_Latn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/az_Latn_AZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bas.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bas_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/be.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/be_BY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bem.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bem_ZM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bez.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bez_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bg.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bg_BG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bm.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bm_ML.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bn_BD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bn_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bo_CN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bo_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/br.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/br_FR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/brx.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/brx_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bs.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bs_Cyrl.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bs_Cyrl_BA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bs_Latn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/bs_Latn_BA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ca.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ca_AD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ca_ES.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ca_ES_VALENCIA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ca_FR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ca_IT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ccp.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ccp_BD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ccp_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ce.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ce_RU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/cgg.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/cgg_UG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/chr.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/chr_US.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ckb.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ckb_IQ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ckb_IR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/cs.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/cs_CZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/cu.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/cu_RU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/cy.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/cy_GB.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/da.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/da_DK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/da_GL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dav.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dav_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/de.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/de_AT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/de_BE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/de_CH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/de_DE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/de_IT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/de_LI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/de_LU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dje.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dje_NE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dsb.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dsb_DE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dua.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dua_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dyo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dyo_SN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dz.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/dz_BT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ebu.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ebu_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ee.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ee_GH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ee_TG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/el.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/el_CY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/el_GR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_001.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_150.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_AG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_AI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_AS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_AT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_AU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_BB.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_BE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_BI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_BM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_BS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_BW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_BZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_CA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_CC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_CH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_CK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_CX.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_CY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_DE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_DG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_DK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_DM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_ER.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_FI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_FJ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_FK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_FM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_GB.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_GD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_GG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_GH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_GI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_GM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_GU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_GY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_HK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_IE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_IL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_IM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_IO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_JE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_JM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_KI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_KN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_KY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_LC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_LR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_LS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_MG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_MH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_MO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_MP.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_MS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_MT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_MU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_MW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_MY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_NA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_NF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_NG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_NL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_NR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_NU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_NZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_PG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_PH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_PK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_PN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_PR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_PW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_RW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SB.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SX.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_SZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_TC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_TK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_TO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_TT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_TV.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_UG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_UM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_US.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_US_POSIX.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_VC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_VG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_VI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_VU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_WS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_ZA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_ZM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/en_ZW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/eo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/eo_001.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_419.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_AR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_BO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_BR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_BZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_CL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_CO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_CR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_CU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_DO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_EA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_EC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_ES.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_GQ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_GT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_HN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_IC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_MX.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_NI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_PA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_PE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_PH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_PR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_PY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_SV.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_US.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_UY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/es_VE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/et.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/et_EE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/eu.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/eu_ES.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ewo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ewo_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fa.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fa_AF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fa_IR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ff.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ff_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ff_GN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ff_MR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ff_SN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fi.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fi_FI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fil.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fil_PH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fo_DK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fo_FO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_BE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_BF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_BI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_BJ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_BL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_CA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_CD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_CF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_CG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_CH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_CI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_DJ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_DZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_FR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_GA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_GF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_GN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_GP.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_GQ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_HT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_KM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_LU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_MA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_MC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_MF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_MG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_ML.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_MQ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_MR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_MU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_NC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_NE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_PF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_PM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_RE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_RW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_SC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_SN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_SY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_TD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_TG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_TN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_VU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_WF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fr_YT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fur.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fur_IT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fy.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/fy_NL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ga.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ga_IE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gd.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gd_GB.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gl.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gl_ES.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gsw.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gsw_CH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gsw_FR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gsw_LI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gu.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gu_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/guz.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/guz_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gv.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/gv_IM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ha.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ha_GH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ha_NE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ha_NG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/haw.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/haw_US.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/he.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/he_IL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hi.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hi_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hr.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hr_BA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hr_HR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hsb.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hsb_DE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hu.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hu_HU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hy.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/hy_AM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/id.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/id_ID.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ig.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ig_NG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ii.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ii_CN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/is.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/is_IS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/it.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/it_CH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/it_IT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/it_SM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/it_VA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ja.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ja_JP.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/jgo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/jgo_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/jmc.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/jmc_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ka.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ka_GE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kab.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kab_DZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kam.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kam_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kde.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kde_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kea.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kea_CV.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/khq.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/khq_ML.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ki.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ki_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kk.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kk_KZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kkj.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kkj_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kl.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kl_GL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kln.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kln_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/km.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/km_KH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kn_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ko.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ko_KP.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ko_KR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kok.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kok_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ks.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ks_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ksb.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ksb_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ksf.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ksf_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ksh.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ksh_DE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kw.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/kw_GB.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ky.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ky_KG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lag.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lag_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lb.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lb_LU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lg.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lg_UG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lkt.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lkt_US.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ln.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ln_AO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ln_CD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ln_CF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ln_CG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lo_LA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lrc.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lrc_IQ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lrc_IR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lt.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lt_LT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lu.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lu_CD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/luo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/luo_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/luy.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/luy_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lv.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/lv_LV.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mas.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mas_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mas_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mer.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mer_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mfe.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mfe_MU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mg.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mg_MG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mgh.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mgh_MZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mgo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mgo_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mk.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mk_MK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ml.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ml_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mn_MN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mr.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mr_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ms.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ms_BN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ms_MY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ms_SG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mt.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mt_MT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mua.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mua_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/my.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/my_MM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mzn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/mzn_IR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/naq.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/naq_NA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nb.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nb_NO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nb_SJ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nd.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nd_ZW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nds.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nds_DE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nds_NL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ne.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ne_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ne_NP.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nl.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nl_AW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nl_BE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nl_BQ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nl_CW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nl_NL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nl_SR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nl_SX.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nmg.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nmg_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nn_NO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nnh.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nnh_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nus.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nus_SS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nyn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/nyn_UG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/om.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/om_ET.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/om_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/or.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/or_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/os.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/os_GE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/os_RU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pa.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pa_Arab.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pa_Arab_PK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pa_Guru.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pa_Guru_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pl.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pl_PL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/prg.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/prg_001.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ps.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ps_AF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_AO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_BR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_CH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_CV.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_GQ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_GW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_LU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_MO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_MZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_PT.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_ST.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/pt_TL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/qu.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/qu_BO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/qu_EC.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/qu_PE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/rm.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/rm_CH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/rn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/rn_BI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ro.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ro_MD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ro_RO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/rof.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/rof_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/root.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ru.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ru_BY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ru_KG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ru_KZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ru_MD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ru_RU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ru_UA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/rw.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/rw_RW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/rwk.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/rwk_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sah.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sah_RU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/saq.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/saq_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sbp.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sbp_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sd.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sd_PK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/se.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/se_FI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/se_NO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/se_SE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/seh.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/seh_MZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ses.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ses_ML.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sg.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sg_CF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/shi.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/shi_Latn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/shi_Latn_MA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/shi_Tfng.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/shi_Tfng_MA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/si.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/si_LK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sk.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sk_SK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sl.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sl_SI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/smn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/smn_FI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sn_ZW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/so.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/so_DJ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/so_ET.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/so_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/so_SO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sq.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sq_AL.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sq_MK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sq_XK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr_Cyrl.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr_Cyrl_BA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr_Cyrl_ME.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr_Cyrl_RS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr_Cyrl_XK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr_Latn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr_Latn_BA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr_Latn_ME.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr_Latn_RS.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sr_Latn_XK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sv.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sv_AX.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sv_FI.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sv_SE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sw.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sw_CD.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sw_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sw_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/sw_UG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ta.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ta_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ta_LK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ta_MY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ta_SG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/te.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/te_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/teo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/teo_KE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/teo_UG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tg.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tg_TJ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/th.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/th_TH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ti.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ti_ER.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ti_ET.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tk.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tk_TM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/to.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/to_TO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tr.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tr_CY.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tr_TR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tt.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tt_RU.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/twq.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/twq_NE.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tzm.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/tzm_MA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ug.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ug_CN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/uk.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/uk_UA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ur.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ur_IN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/ur_PK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/uz.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/uz_Arab.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/uz_Arab_AF.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/uz_Cyrl.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/uz_Cyrl_UZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/uz_Latn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/uz_Latn_UZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vai.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vai_Latn.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vai_Latn_LR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vai_Vaii.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vai_Vaii_LR.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vi.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vi_VN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vo_001.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vun.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/vun_TZ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/wae.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/wae_CH.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/wo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/wo_SN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/xog.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/xog_UG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yav.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yav_CM.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yi.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yi_001.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yo_BJ.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yo_NG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yue.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yue_HK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yue_Hans.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yue_Hans_CN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yue_Hant.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/yue_Hant_HK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zgh.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zgh_MA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zh.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zh_Hans.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zh_Hans_CN.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zh_Hans_HK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zh_Hans_MO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zh_Hans_SG.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zh_Hant.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zh_Hant_HK.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zh_Hant_MO.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zh_Hant_TW.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zu.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/main/zu_ZA.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/attributeValueValidity.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/characters.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/coverageLevels.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/dayPeriods.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/genderList.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/languageInfo.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/likelySubtags.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/metaZones.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/numberingSystems.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/ordinals.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/pluralRanges.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/plurals.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/rgScope.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/subdivisions.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/supplementalData.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/supplementalMetadata.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/telephoneCodeData.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/common/supplemental/windowsZones.xml (100%) rename {src/jdk.localedata/share/classes/sun/util/cldr/resources => make/data/cldr}/unicode-license.txt (100%) delete mode 100644 make/gensrc/GensrcCLDR.gmk diff --git a/make/data/cldr/README b/make/data/cldr/README new file mode 100644 index 00000000000..393f3d79ebf --- /dev/null +++ b/make/data/cldr/README @@ -0,0 +1,4 @@ +CLDR - Unicode Common Locale Data Repository +http://cldr.unicode.org + +CLDR version installed: 33 diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/bcp47/timezone.xml b/make/data/cldr/common/bcp47/timezone.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/bcp47/timezone.xml rename to make/data/cldr/common/bcp47/timezone.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/dtd/ldml.dtd b/make/data/cldr/common/dtd/ldml.dtd similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/dtd/ldml.dtd rename to make/data/cldr/common/dtd/ldml.dtd diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/dtd/ldmlBCP47.dtd b/make/data/cldr/common/dtd/ldmlBCP47.dtd similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/dtd/ldmlBCP47.dtd rename to make/data/cldr/common/dtd/ldmlBCP47.dtd diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/dtd/ldmlSupplemental.dtd b/make/data/cldr/common/dtd/ldmlSupplemental.dtd similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/dtd/ldmlSupplemental.dtd rename to make/data/cldr/common/dtd/ldmlSupplemental.dtd diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/af.xml b/make/data/cldr/common/main/af.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/af.xml rename to make/data/cldr/common/main/af.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/af_NA.xml b/make/data/cldr/common/main/af_NA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/af_NA.xml rename to make/data/cldr/common/main/af_NA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/af_ZA.xml b/make/data/cldr/common/main/af_ZA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/af_ZA.xml rename to make/data/cldr/common/main/af_ZA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/agq.xml b/make/data/cldr/common/main/agq.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/agq.xml rename to make/data/cldr/common/main/agq.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/agq_CM.xml b/make/data/cldr/common/main/agq_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/agq_CM.xml rename to make/data/cldr/common/main/agq_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ak.xml b/make/data/cldr/common/main/ak.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ak.xml rename to make/data/cldr/common/main/ak.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ak_GH.xml b/make/data/cldr/common/main/ak_GH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ak_GH.xml rename to make/data/cldr/common/main/ak_GH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/am.xml b/make/data/cldr/common/main/am.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/am.xml rename to make/data/cldr/common/main/am.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/am_ET.xml b/make/data/cldr/common/main/am_ET.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/am_ET.xml rename to make/data/cldr/common/main/am_ET.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar.xml b/make/data/cldr/common/main/ar.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar.xml rename to make/data/cldr/common/main/ar.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_001.xml b/make/data/cldr/common/main/ar_001.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_001.xml rename to make/data/cldr/common/main/ar_001.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_AE.xml b/make/data/cldr/common/main/ar_AE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_AE.xml rename to make/data/cldr/common/main/ar_AE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_BH.xml b/make/data/cldr/common/main/ar_BH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_BH.xml rename to make/data/cldr/common/main/ar_BH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_DJ.xml b/make/data/cldr/common/main/ar_DJ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_DJ.xml rename to make/data/cldr/common/main/ar_DJ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_DZ.xml b/make/data/cldr/common/main/ar_DZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_DZ.xml rename to make/data/cldr/common/main/ar_DZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_EG.xml b/make/data/cldr/common/main/ar_EG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_EG.xml rename to make/data/cldr/common/main/ar_EG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_EH.xml b/make/data/cldr/common/main/ar_EH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_EH.xml rename to make/data/cldr/common/main/ar_EH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_ER.xml b/make/data/cldr/common/main/ar_ER.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_ER.xml rename to make/data/cldr/common/main/ar_ER.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_IL.xml b/make/data/cldr/common/main/ar_IL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_IL.xml rename to make/data/cldr/common/main/ar_IL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_IQ.xml b/make/data/cldr/common/main/ar_IQ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_IQ.xml rename to make/data/cldr/common/main/ar_IQ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_JO.xml b/make/data/cldr/common/main/ar_JO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_JO.xml rename to make/data/cldr/common/main/ar_JO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_KM.xml b/make/data/cldr/common/main/ar_KM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_KM.xml rename to make/data/cldr/common/main/ar_KM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_KW.xml b/make/data/cldr/common/main/ar_KW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_KW.xml rename to make/data/cldr/common/main/ar_KW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_LB.xml b/make/data/cldr/common/main/ar_LB.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_LB.xml rename to make/data/cldr/common/main/ar_LB.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_LY.xml b/make/data/cldr/common/main/ar_LY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_LY.xml rename to make/data/cldr/common/main/ar_LY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_MA.xml b/make/data/cldr/common/main/ar_MA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_MA.xml rename to make/data/cldr/common/main/ar_MA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_MR.xml b/make/data/cldr/common/main/ar_MR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_MR.xml rename to make/data/cldr/common/main/ar_MR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_OM.xml b/make/data/cldr/common/main/ar_OM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_OM.xml rename to make/data/cldr/common/main/ar_OM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_PS.xml b/make/data/cldr/common/main/ar_PS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_PS.xml rename to make/data/cldr/common/main/ar_PS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_QA.xml b/make/data/cldr/common/main/ar_QA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_QA.xml rename to make/data/cldr/common/main/ar_QA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_SA.xml b/make/data/cldr/common/main/ar_SA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_SA.xml rename to make/data/cldr/common/main/ar_SA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_SD.xml b/make/data/cldr/common/main/ar_SD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_SD.xml rename to make/data/cldr/common/main/ar_SD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_SO.xml b/make/data/cldr/common/main/ar_SO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_SO.xml rename to make/data/cldr/common/main/ar_SO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_SS.xml b/make/data/cldr/common/main/ar_SS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_SS.xml rename to make/data/cldr/common/main/ar_SS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_SY.xml b/make/data/cldr/common/main/ar_SY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_SY.xml rename to make/data/cldr/common/main/ar_SY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_TD.xml b/make/data/cldr/common/main/ar_TD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_TD.xml rename to make/data/cldr/common/main/ar_TD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_TN.xml b/make/data/cldr/common/main/ar_TN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_TN.xml rename to make/data/cldr/common/main/ar_TN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_YE.xml b/make/data/cldr/common/main/ar_YE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ar_YE.xml rename to make/data/cldr/common/main/ar_YE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/as.xml b/make/data/cldr/common/main/as.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/as.xml rename to make/data/cldr/common/main/as.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/as_IN.xml b/make/data/cldr/common/main/as_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/as_IN.xml rename to make/data/cldr/common/main/as_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/asa.xml b/make/data/cldr/common/main/asa.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/asa.xml rename to make/data/cldr/common/main/asa.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/asa_TZ.xml b/make/data/cldr/common/main/asa_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/asa_TZ.xml rename to make/data/cldr/common/main/asa_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ast.xml b/make/data/cldr/common/main/ast.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ast.xml rename to make/data/cldr/common/main/ast.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ast_ES.xml b/make/data/cldr/common/main/ast_ES.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ast_ES.xml rename to make/data/cldr/common/main/ast_ES.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/az.xml b/make/data/cldr/common/main/az.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/az.xml rename to make/data/cldr/common/main/az.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/az_Cyrl.xml b/make/data/cldr/common/main/az_Cyrl.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/az_Cyrl.xml rename to make/data/cldr/common/main/az_Cyrl.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/az_Cyrl_AZ.xml b/make/data/cldr/common/main/az_Cyrl_AZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/az_Cyrl_AZ.xml rename to make/data/cldr/common/main/az_Cyrl_AZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/az_Latn.xml b/make/data/cldr/common/main/az_Latn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/az_Latn.xml rename to make/data/cldr/common/main/az_Latn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/az_Latn_AZ.xml b/make/data/cldr/common/main/az_Latn_AZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/az_Latn_AZ.xml rename to make/data/cldr/common/main/az_Latn_AZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bas.xml b/make/data/cldr/common/main/bas.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bas.xml rename to make/data/cldr/common/main/bas.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bas_CM.xml b/make/data/cldr/common/main/bas_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bas_CM.xml rename to make/data/cldr/common/main/bas_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/be.xml b/make/data/cldr/common/main/be.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/be.xml rename to make/data/cldr/common/main/be.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/be_BY.xml b/make/data/cldr/common/main/be_BY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/be_BY.xml rename to make/data/cldr/common/main/be_BY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bem.xml b/make/data/cldr/common/main/bem.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bem.xml rename to make/data/cldr/common/main/bem.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bem_ZM.xml b/make/data/cldr/common/main/bem_ZM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bem_ZM.xml rename to make/data/cldr/common/main/bem_ZM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bez.xml b/make/data/cldr/common/main/bez.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bez.xml rename to make/data/cldr/common/main/bez.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bez_TZ.xml b/make/data/cldr/common/main/bez_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bez_TZ.xml rename to make/data/cldr/common/main/bez_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bg.xml b/make/data/cldr/common/main/bg.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bg.xml rename to make/data/cldr/common/main/bg.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bg_BG.xml b/make/data/cldr/common/main/bg_BG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bg_BG.xml rename to make/data/cldr/common/main/bg_BG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bm.xml b/make/data/cldr/common/main/bm.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bm.xml rename to make/data/cldr/common/main/bm.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bm_ML.xml b/make/data/cldr/common/main/bm_ML.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bm_ML.xml rename to make/data/cldr/common/main/bm_ML.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bn.xml b/make/data/cldr/common/main/bn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bn.xml rename to make/data/cldr/common/main/bn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bn_BD.xml b/make/data/cldr/common/main/bn_BD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bn_BD.xml rename to make/data/cldr/common/main/bn_BD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bn_IN.xml b/make/data/cldr/common/main/bn_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bn_IN.xml rename to make/data/cldr/common/main/bn_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bo.xml b/make/data/cldr/common/main/bo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bo.xml rename to make/data/cldr/common/main/bo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bo_CN.xml b/make/data/cldr/common/main/bo_CN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bo_CN.xml rename to make/data/cldr/common/main/bo_CN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bo_IN.xml b/make/data/cldr/common/main/bo_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bo_IN.xml rename to make/data/cldr/common/main/bo_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/br.xml b/make/data/cldr/common/main/br.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/br.xml rename to make/data/cldr/common/main/br.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/br_FR.xml b/make/data/cldr/common/main/br_FR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/br_FR.xml rename to make/data/cldr/common/main/br_FR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/brx.xml b/make/data/cldr/common/main/brx.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/brx.xml rename to make/data/cldr/common/main/brx.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/brx_IN.xml b/make/data/cldr/common/main/brx_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/brx_IN.xml rename to make/data/cldr/common/main/brx_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bs.xml b/make/data/cldr/common/main/bs.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bs.xml rename to make/data/cldr/common/main/bs.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bs_Cyrl.xml b/make/data/cldr/common/main/bs_Cyrl.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bs_Cyrl.xml rename to make/data/cldr/common/main/bs_Cyrl.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bs_Cyrl_BA.xml b/make/data/cldr/common/main/bs_Cyrl_BA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bs_Cyrl_BA.xml rename to make/data/cldr/common/main/bs_Cyrl_BA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bs_Latn.xml b/make/data/cldr/common/main/bs_Latn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bs_Latn.xml rename to make/data/cldr/common/main/bs_Latn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bs_Latn_BA.xml b/make/data/cldr/common/main/bs_Latn_BA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/bs_Latn_BA.xml rename to make/data/cldr/common/main/bs_Latn_BA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca.xml b/make/data/cldr/common/main/ca.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca.xml rename to make/data/cldr/common/main/ca.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca_AD.xml b/make/data/cldr/common/main/ca_AD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca_AD.xml rename to make/data/cldr/common/main/ca_AD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca_ES.xml b/make/data/cldr/common/main/ca_ES.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca_ES.xml rename to make/data/cldr/common/main/ca_ES.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca_ES_VALENCIA.xml b/make/data/cldr/common/main/ca_ES_VALENCIA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca_ES_VALENCIA.xml rename to make/data/cldr/common/main/ca_ES_VALENCIA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca_FR.xml b/make/data/cldr/common/main/ca_FR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca_FR.xml rename to make/data/cldr/common/main/ca_FR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca_IT.xml b/make/data/cldr/common/main/ca_IT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ca_IT.xml rename to make/data/cldr/common/main/ca_IT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ccp.xml b/make/data/cldr/common/main/ccp.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ccp.xml rename to make/data/cldr/common/main/ccp.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ccp_BD.xml b/make/data/cldr/common/main/ccp_BD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ccp_BD.xml rename to make/data/cldr/common/main/ccp_BD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ccp_IN.xml b/make/data/cldr/common/main/ccp_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ccp_IN.xml rename to make/data/cldr/common/main/ccp_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ce.xml b/make/data/cldr/common/main/ce.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ce.xml rename to make/data/cldr/common/main/ce.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ce_RU.xml b/make/data/cldr/common/main/ce_RU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ce_RU.xml rename to make/data/cldr/common/main/ce_RU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cgg.xml b/make/data/cldr/common/main/cgg.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cgg.xml rename to make/data/cldr/common/main/cgg.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cgg_UG.xml b/make/data/cldr/common/main/cgg_UG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cgg_UG.xml rename to make/data/cldr/common/main/cgg_UG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/chr.xml b/make/data/cldr/common/main/chr.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/chr.xml rename to make/data/cldr/common/main/chr.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/chr_US.xml b/make/data/cldr/common/main/chr_US.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/chr_US.xml rename to make/data/cldr/common/main/chr_US.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ckb.xml b/make/data/cldr/common/main/ckb.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ckb.xml rename to make/data/cldr/common/main/ckb.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ckb_IQ.xml b/make/data/cldr/common/main/ckb_IQ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ckb_IQ.xml rename to make/data/cldr/common/main/ckb_IQ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ckb_IR.xml b/make/data/cldr/common/main/ckb_IR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ckb_IR.xml rename to make/data/cldr/common/main/ckb_IR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cs.xml b/make/data/cldr/common/main/cs.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cs.xml rename to make/data/cldr/common/main/cs.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cs_CZ.xml b/make/data/cldr/common/main/cs_CZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cs_CZ.xml rename to make/data/cldr/common/main/cs_CZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cu.xml b/make/data/cldr/common/main/cu.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cu.xml rename to make/data/cldr/common/main/cu.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cu_RU.xml b/make/data/cldr/common/main/cu_RU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cu_RU.xml rename to make/data/cldr/common/main/cu_RU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cy.xml b/make/data/cldr/common/main/cy.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cy.xml rename to make/data/cldr/common/main/cy.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cy_GB.xml b/make/data/cldr/common/main/cy_GB.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/cy_GB.xml rename to make/data/cldr/common/main/cy_GB.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/da.xml b/make/data/cldr/common/main/da.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/da.xml rename to make/data/cldr/common/main/da.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/da_DK.xml b/make/data/cldr/common/main/da_DK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/da_DK.xml rename to make/data/cldr/common/main/da_DK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/da_GL.xml b/make/data/cldr/common/main/da_GL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/da_GL.xml rename to make/data/cldr/common/main/da_GL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dav.xml b/make/data/cldr/common/main/dav.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dav.xml rename to make/data/cldr/common/main/dav.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dav_KE.xml b/make/data/cldr/common/main/dav_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dav_KE.xml rename to make/data/cldr/common/main/dav_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de.xml b/make/data/cldr/common/main/de.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de.xml rename to make/data/cldr/common/main/de.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_AT.xml b/make/data/cldr/common/main/de_AT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_AT.xml rename to make/data/cldr/common/main/de_AT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_BE.xml b/make/data/cldr/common/main/de_BE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_BE.xml rename to make/data/cldr/common/main/de_BE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_CH.xml b/make/data/cldr/common/main/de_CH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_CH.xml rename to make/data/cldr/common/main/de_CH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_DE.xml b/make/data/cldr/common/main/de_DE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_DE.xml rename to make/data/cldr/common/main/de_DE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_IT.xml b/make/data/cldr/common/main/de_IT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_IT.xml rename to make/data/cldr/common/main/de_IT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_LI.xml b/make/data/cldr/common/main/de_LI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_LI.xml rename to make/data/cldr/common/main/de_LI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_LU.xml b/make/data/cldr/common/main/de_LU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/de_LU.xml rename to make/data/cldr/common/main/de_LU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dje.xml b/make/data/cldr/common/main/dje.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dje.xml rename to make/data/cldr/common/main/dje.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dje_NE.xml b/make/data/cldr/common/main/dje_NE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dje_NE.xml rename to make/data/cldr/common/main/dje_NE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dsb.xml b/make/data/cldr/common/main/dsb.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dsb.xml rename to make/data/cldr/common/main/dsb.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dsb_DE.xml b/make/data/cldr/common/main/dsb_DE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dsb_DE.xml rename to make/data/cldr/common/main/dsb_DE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dua.xml b/make/data/cldr/common/main/dua.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dua.xml rename to make/data/cldr/common/main/dua.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dua_CM.xml b/make/data/cldr/common/main/dua_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dua_CM.xml rename to make/data/cldr/common/main/dua_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dyo.xml b/make/data/cldr/common/main/dyo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dyo.xml rename to make/data/cldr/common/main/dyo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dyo_SN.xml b/make/data/cldr/common/main/dyo_SN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dyo_SN.xml rename to make/data/cldr/common/main/dyo_SN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dz.xml b/make/data/cldr/common/main/dz.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dz.xml rename to make/data/cldr/common/main/dz.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dz_BT.xml b/make/data/cldr/common/main/dz_BT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/dz_BT.xml rename to make/data/cldr/common/main/dz_BT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ebu.xml b/make/data/cldr/common/main/ebu.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ebu.xml rename to make/data/cldr/common/main/ebu.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ebu_KE.xml b/make/data/cldr/common/main/ebu_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ebu_KE.xml rename to make/data/cldr/common/main/ebu_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ee.xml b/make/data/cldr/common/main/ee.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ee.xml rename to make/data/cldr/common/main/ee.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ee_GH.xml b/make/data/cldr/common/main/ee_GH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ee_GH.xml rename to make/data/cldr/common/main/ee_GH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ee_TG.xml b/make/data/cldr/common/main/ee_TG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ee_TG.xml rename to make/data/cldr/common/main/ee_TG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/el.xml b/make/data/cldr/common/main/el.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/el.xml rename to make/data/cldr/common/main/el.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/el_CY.xml b/make/data/cldr/common/main/el_CY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/el_CY.xml rename to make/data/cldr/common/main/el_CY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/el_GR.xml b/make/data/cldr/common/main/el_GR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/el_GR.xml rename to make/data/cldr/common/main/el_GR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en.xml b/make/data/cldr/common/main/en.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en.xml rename to make/data/cldr/common/main/en.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_001.xml b/make/data/cldr/common/main/en_001.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_001.xml rename to make/data/cldr/common/main/en_001.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_150.xml b/make/data/cldr/common/main/en_150.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_150.xml rename to make/data/cldr/common/main/en_150.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_AG.xml b/make/data/cldr/common/main/en_AG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_AG.xml rename to make/data/cldr/common/main/en_AG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_AI.xml b/make/data/cldr/common/main/en_AI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_AI.xml rename to make/data/cldr/common/main/en_AI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_AS.xml b/make/data/cldr/common/main/en_AS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_AS.xml rename to make/data/cldr/common/main/en_AS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_AT.xml b/make/data/cldr/common/main/en_AT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_AT.xml rename to make/data/cldr/common/main/en_AT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_AU.xml b/make/data/cldr/common/main/en_AU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_AU.xml rename to make/data/cldr/common/main/en_AU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BB.xml b/make/data/cldr/common/main/en_BB.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BB.xml rename to make/data/cldr/common/main/en_BB.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BE.xml b/make/data/cldr/common/main/en_BE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BE.xml rename to make/data/cldr/common/main/en_BE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BI.xml b/make/data/cldr/common/main/en_BI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BI.xml rename to make/data/cldr/common/main/en_BI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BM.xml b/make/data/cldr/common/main/en_BM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BM.xml rename to make/data/cldr/common/main/en_BM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BS.xml b/make/data/cldr/common/main/en_BS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BS.xml rename to make/data/cldr/common/main/en_BS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BW.xml b/make/data/cldr/common/main/en_BW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BW.xml rename to make/data/cldr/common/main/en_BW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BZ.xml b/make/data/cldr/common/main/en_BZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_BZ.xml rename to make/data/cldr/common/main/en_BZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CA.xml b/make/data/cldr/common/main/en_CA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CA.xml rename to make/data/cldr/common/main/en_CA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CC.xml b/make/data/cldr/common/main/en_CC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CC.xml rename to make/data/cldr/common/main/en_CC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CH.xml b/make/data/cldr/common/main/en_CH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CH.xml rename to make/data/cldr/common/main/en_CH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CK.xml b/make/data/cldr/common/main/en_CK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CK.xml rename to make/data/cldr/common/main/en_CK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CM.xml b/make/data/cldr/common/main/en_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CM.xml rename to make/data/cldr/common/main/en_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CX.xml b/make/data/cldr/common/main/en_CX.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CX.xml rename to make/data/cldr/common/main/en_CX.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CY.xml b/make/data/cldr/common/main/en_CY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_CY.xml rename to make/data/cldr/common/main/en_CY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_DE.xml b/make/data/cldr/common/main/en_DE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_DE.xml rename to make/data/cldr/common/main/en_DE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_DG.xml b/make/data/cldr/common/main/en_DG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_DG.xml rename to make/data/cldr/common/main/en_DG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_DK.xml b/make/data/cldr/common/main/en_DK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_DK.xml rename to make/data/cldr/common/main/en_DK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_DM.xml b/make/data/cldr/common/main/en_DM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_DM.xml rename to make/data/cldr/common/main/en_DM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_ER.xml b/make/data/cldr/common/main/en_ER.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_ER.xml rename to make/data/cldr/common/main/en_ER.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_FI.xml b/make/data/cldr/common/main/en_FI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_FI.xml rename to make/data/cldr/common/main/en_FI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_FJ.xml b/make/data/cldr/common/main/en_FJ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_FJ.xml rename to make/data/cldr/common/main/en_FJ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_FK.xml b/make/data/cldr/common/main/en_FK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_FK.xml rename to make/data/cldr/common/main/en_FK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_FM.xml b/make/data/cldr/common/main/en_FM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_FM.xml rename to make/data/cldr/common/main/en_FM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GB.xml b/make/data/cldr/common/main/en_GB.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GB.xml rename to make/data/cldr/common/main/en_GB.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GD.xml b/make/data/cldr/common/main/en_GD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GD.xml rename to make/data/cldr/common/main/en_GD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GG.xml b/make/data/cldr/common/main/en_GG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GG.xml rename to make/data/cldr/common/main/en_GG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GH.xml b/make/data/cldr/common/main/en_GH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GH.xml rename to make/data/cldr/common/main/en_GH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GI.xml b/make/data/cldr/common/main/en_GI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GI.xml rename to make/data/cldr/common/main/en_GI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GM.xml b/make/data/cldr/common/main/en_GM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GM.xml rename to make/data/cldr/common/main/en_GM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GU.xml b/make/data/cldr/common/main/en_GU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GU.xml rename to make/data/cldr/common/main/en_GU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GY.xml b/make/data/cldr/common/main/en_GY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_GY.xml rename to make/data/cldr/common/main/en_GY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_HK.xml b/make/data/cldr/common/main/en_HK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_HK.xml rename to make/data/cldr/common/main/en_HK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_IE.xml b/make/data/cldr/common/main/en_IE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_IE.xml rename to make/data/cldr/common/main/en_IE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_IL.xml b/make/data/cldr/common/main/en_IL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_IL.xml rename to make/data/cldr/common/main/en_IL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_IM.xml b/make/data/cldr/common/main/en_IM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_IM.xml rename to make/data/cldr/common/main/en_IM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_IN.xml b/make/data/cldr/common/main/en_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_IN.xml rename to make/data/cldr/common/main/en_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_IO.xml b/make/data/cldr/common/main/en_IO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_IO.xml rename to make/data/cldr/common/main/en_IO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_JE.xml b/make/data/cldr/common/main/en_JE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_JE.xml rename to make/data/cldr/common/main/en_JE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_JM.xml b/make/data/cldr/common/main/en_JM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_JM.xml rename to make/data/cldr/common/main/en_JM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_KE.xml b/make/data/cldr/common/main/en_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_KE.xml rename to make/data/cldr/common/main/en_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_KI.xml b/make/data/cldr/common/main/en_KI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_KI.xml rename to make/data/cldr/common/main/en_KI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_KN.xml b/make/data/cldr/common/main/en_KN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_KN.xml rename to make/data/cldr/common/main/en_KN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_KY.xml b/make/data/cldr/common/main/en_KY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_KY.xml rename to make/data/cldr/common/main/en_KY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_LC.xml b/make/data/cldr/common/main/en_LC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_LC.xml rename to make/data/cldr/common/main/en_LC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_LR.xml b/make/data/cldr/common/main/en_LR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_LR.xml rename to make/data/cldr/common/main/en_LR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_LS.xml b/make/data/cldr/common/main/en_LS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_LS.xml rename to make/data/cldr/common/main/en_LS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MG.xml b/make/data/cldr/common/main/en_MG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MG.xml rename to make/data/cldr/common/main/en_MG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MH.xml b/make/data/cldr/common/main/en_MH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MH.xml rename to make/data/cldr/common/main/en_MH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MO.xml b/make/data/cldr/common/main/en_MO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MO.xml rename to make/data/cldr/common/main/en_MO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MP.xml b/make/data/cldr/common/main/en_MP.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MP.xml rename to make/data/cldr/common/main/en_MP.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MS.xml b/make/data/cldr/common/main/en_MS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MS.xml rename to make/data/cldr/common/main/en_MS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MT.xml b/make/data/cldr/common/main/en_MT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MT.xml rename to make/data/cldr/common/main/en_MT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MU.xml b/make/data/cldr/common/main/en_MU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MU.xml rename to make/data/cldr/common/main/en_MU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MW.xml b/make/data/cldr/common/main/en_MW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MW.xml rename to make/data/cldr/common/main/en_MW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MY.xml b/make/data/cldr/common/main/en_MY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_MY.xml rename to make/data/cldr/common/main/en_MY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NA.xml b/make/data/cldr/common/main/en_NA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NA.xml rename to make/data/cldr/common/main/en_NA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NF.xml b/make/data/cldr/common/main/en_NF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NF.xml rename to make/data/cldr/common/main/en_NF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NG.xml b/make/data/cldr/common/main/en_NG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NG.xml rename to make/data/cldr/common/main/en_NG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NL.xml b/make/data/cldr/common/main/en_NL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NL.xml rename to make/data/cldr/common/main/en_NL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NR.xml b/make/data/cldr/common/main/en_NR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NR.xml rename to make/data/cldr/common/main/en_NR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NU.xml b/make/data/cldr/common/main/en_NU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NU.xml rename to make/data/cldr/common/main/en_NU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NZ.xml b/make/data/cldr/common/main/en_NZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_NZ.xml rename to make/data/cldr/common/main/en_NZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PG.xml b/make/data/cldr/common/main/en_PG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PG.xml rename to make/data/cldr/common/main/en_PG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PH.xml b/make/data/cldr/common/main/en_PH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PH.xml rename to make/data/cldr/common/main/en_PH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PK.xml b/make/data/cldr/common/main/en_PK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PK.xml rename to make/data/cldr/common/main/en_PK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PN.xml b/make/data/cldr/common/main/en_PN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PN.xml rename to make/data/cldr/common/main/en_PN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PR.xml b/make/data/cldr/common/main/en_PR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PR.xml rename to make/data/cldr/common/main/en_PR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PW.xml b/make/data/cldr/common/main/en_PW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_PW.xml rename to make/data/cldr/common/main/en_PW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_RW.xml b/make/data/cldr/common/main/en_RW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_RW.xml rename to make/data/cldr/common/main/en_RW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SB.xml b/make/data/cldr/common/main/en_SB.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SB.xml rename to make/data/cldr/common/main/en_SB.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SC.xml b/make/data/cldr/common/main/en_SC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SC.xml rename to make/data/cldr/common/main/en_SC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SD.xml b/make/data/cldr/common/main/en_SD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SD.xml rename to make/data/cldr/common/main/en_SD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SE.xml b/make/data/cldr/common/main/en_SE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SE.xml rename to make/data/cldr/common/main/en_SE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SG.xml b/make/data/cldr/common/main/en_SG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SG.xml rename to make/data/cldr/common/main/en_SG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SH.xml b/make/data/cldr/common/main/en_SH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SH.xml rename to make/data/cldr/common/main/en_SH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SI.xml b/make/data/cldr/common/main/en_SI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SI.xml rename to make/data/cldr/common/main/en_SI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SL.xml b/make/data/cldr/common/main/en_SL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SL.xml rename to make/data/cldr/common/main/en_SL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SS.xml b/make/data/cldr/common/main/en_SS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SS.xml rename to make/data/cldr/common/main/en_SS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SX.xml b/make/data/cldr/common/main/en_SX.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SX.xml rename to make/data/cldr/common/main/en_SX.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SZ.xml b/make/data/cldr/common/main/en_SZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_SZ.xml rename to make/data/cldr/common/main/en_SZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TC.xml b/make/data/cldr/common/main/en_TC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TC.xml rename to make/data/cldr/common/main/en_TC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TK.xml b/make/data/cldr/common/main/en_TK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TK.xml rename to make/data/cldr/common/main/en_TK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TO.xml b/make/data/cldr/common/main/en_TO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TO.xml rename to make/data/cldr/common/main/en_TO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TT.xml b/make/data/cldr/common/main/en_TT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TT.xml rename to make/data/cldr/common/main/en_TT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TV.xml b/make/data/cldr/common/main/en_TV.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TV.xml rename to make/data/cldr/common/main/en_TV.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TZ.xml b/make/data/cldr/common/main/en_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_TZ.xml rename to make/data/cldr/common/main/en_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_UG.xml b/make/data/cldr/common/main/en_UG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_UG.xml rename to make/data/cldr/common/main/en_UG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_UM.xml b/make/data/cldr/common/main/en_UM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_UM.xml rename to make/data/cldr/common/main/en_UM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_US.xml b/make/data/cldr/common/main/en_US.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_US.xml rename to make/data/cldr/common/main/en_US.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_US_POSIX.xml b/make/data/cldr/common/main/en_US_POSIX.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_US_POSIX.xml rename to make/data/cldr/common/main/en_US_POSIX.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_VC.xml b/make/data/cldr/common/main/en_VC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_VC.xml rename to make/data/cldr/common/main/en_VC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_VG.xml b/make/data/cldr/common/main/en_VG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_VG.xml rename to make/data/cldr/common/main/en_VG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_VI.xml b/make/data/cldr/common/main/en_VI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_VI.xml rename to make/data/cldr/common/main/en_VI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_VU.xml b/make/data/cldr/common/main/en_VU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_VU.xml rename to make/data/cldr/common/main/en_VU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_WS.xml b/make/data/cldr/common/main/en_WS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_WS.xml rename to make/data/cldr/common/main/en_WS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_ZA.xml b/make/data/cldr/common/main/en_ZA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_ZA.xml rename to make/data/cldr/common/main/en_ZA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_ZM.xml b/make/data/cldr/common/main/en_ZM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_ZM.xml rename to make/data/cldr/common/main/en_ZM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_ZW.xml b/make/data/cldr/common/main/en_ZW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/en_ZW.xml rename to make/data/cldr/common/main/en_ZW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/eo.xml b/make/data/cldr/common/main/eo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/eo.xml rename to make/data/cldr/common/main/eo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/eo_001.xml b/make/data/cldr/common/main/eo_001.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/eo_001.xml rename to make/data/cldr/common/main/eo_001.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es.xml b/make/data/cldr/common/main/es.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es.xml rename to make/data/cldr/common/main/es.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_419.xml b/make/data/cldr/common/main/es_419.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_419.xml rename to make/data/cldr/common/main/es_419.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_AR.xml b/make/data/cldr/common/main/es_AR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_AR.xml rename to make/data/cldr/common/main/es_AR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_BO.xml b/make/data/cldr/common/main/es_BO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_BO.xml rename to make/data/cldr/common/main/es_BO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_BR.xml b/make/data/cldr/common/main/es_BR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_BR.xml rename to make/data/cldr/common/main/es_BR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_BZ.xml b/make/data/cldr/common/main/es_BZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_BZ.xml rename to make/data/cldr/common/main/es_BZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_CL.xml b/make/data/cldr/common/main/es_CL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_CL.xml rename to make/data/cldr/common/main/es_CL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_CO.xml b/make/data/cldr/common/main/es_CO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_CO.xml rename to make/data/cldr/common/main/es_CO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_CR.xml b/make/data/cldr/common/main/es_CR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_CR.xml rename to make/data/cldr/common/main/es_CR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_CU.xml b/make/data/cldr/common/main/es_CU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_CU.xml rename to make/data/cldr/common/main/es_CU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_DO.xml b/make/data/cldr/common/main/es_DO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_DO.xml rename to make/data/cldr/common/main/es_DO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_EA.xml b/make/data/cldr/common/main/es_EA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_EA.xml rename to make/data/cldr/common/main/es_EA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_EC.xml b/make/data/cldr/common/main/es_EC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_EC.xml rename to make/data/cldr/common/main/es_EC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_ES.xml b/make/data/cldr/common/main/es_ES.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_ES.xml rename to make/data/cldr/common/main/es_ES.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_GQ.xml b/make/data/cldr/common/main/es_GQ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_GQ.xml rename to make/data/cldr/common/main/es_GQ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_GT.xml b/make/data/cldr/common/main/es_GT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_GT.xml rename to make/data/cldr/common/main/es_GT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_HN.xml b/make/data/cldr/common/main/es_HN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_HN.xml rename to make/data/cldr/common/main/es_HN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_IC.xml b/make/data/cldr/common/main/es_IC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_IC.xml rename to make/data/cldr/common/main/es_IC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_MX.xml b/make/data/cldr/common/main/es_MX.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_MX.xml rename to make/data/cldr/common/main/es_MX.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_NI.xml b/make/data/cldr/common/main/es_NI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_NI.xml rename to make/data/cldr/common/main/es_NI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_PA.xml b/make/data/cldr/common/main/es_PA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_PA.xml rename to make/data/cldr/common/main/es_PA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_PE.xml b/make/data/cldr/common/main/es_PE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_PE.xml rename to make/data/cldr/common/main/es_PE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_PH.xml b/make/data/cldr/common/main/es_PH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_PH.xml rename to make/data/cldr/common/main/es_PH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_PR.xml b/make/data/cldr/common/main/es_PR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_PR.xml rename to make/data/cldr/common/main/es_PR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_PY.xml b/make/data/cldr/common/main/es_PY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_PY.xml rename to make/data/cldr/common/main/es_PY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_SV.xml b/make/data/cldr/common/main/es_SV.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_SV.xml rename to make/data/cldr/common/main/es_SV.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_US.xml b/make/data/cldr/common/main/es_US.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_US.xml rename to make/data/cldr/common/main/es_US.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_UY.xml b/make/data/cldr/common/main/es_UY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_UY.xml rename to make/data/cldr/common/main/es_UY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_VE.xml b/make/data/cldr/common/main/es_VE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/es_VE.xml rename to make/data/cldr/common/main/es_VE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/et.xml b/make/data/cldr/common/main/et.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/et.xml rename to make/data/cldr/common/main/et.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/et_EE.xml b/make/data/cldr/common/main/et_EE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/et_EE.xml rename to make/data/cldr/common/main/et_EE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/eu.xml b/make/data/cldr/common/main/eu.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/eu.xml rename to make/data/cldr/common/main/eu.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/eu_ES.xml b/make/data/cldr/common/main/eu_ES.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/eu_ES.xml rename to make/data/cldr/common/main/eu_ES.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ewo.xml b/make/data/cldr/common/main/ewo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ewo.xml rename to make/data/cldr/common/main/ewo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ewo_CM.xml b/make/data/cldr/common/main/ewo_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ewo_CM.xml rename to make/data/cldr/common/main/ewo_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fa.xml b/make/data/cldr/common/main/fa.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fa.xml rename to make/data/cldr/common/main/fa.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fa_AF.xml b/make/data/cldr/common/main/fa_AF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fa_AF.xml rename to make/data/cldr/common/main/fa_AF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fa_IR.xml b/make/data/cldr/common/main/fa_IR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fa_IR.xml rename to make/data/cldr/common/main/fa_IR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ff.xml b/make/data/cldr/common/main/ff.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ff.xml rename to make/data/cldr/common/main/ff.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ff_CM.xml b/make/data/cldr/common/main/ff_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ff_CM.xml rename to make/data/cldr/common/main/ff_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ff_GN.xml b/make/data/cldr/common/main/ff_GN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ff_GN.xml rename to make/data/cldr/common/main/ff_GN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ff_MR.xml b/make/data/cldr/common/main/ff_MR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ff_MR.xml rename to make/data/cldr/common/main/ff_MR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ff_SN.xml b/make/data/cldr/common/main/ff_SN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ff_SN.xml rename to make/data/cldr/common/main/ff_SN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fi.xml b/make/data/cldr/common/main/fi.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fi.xml rename to make/data/cldr/common/main/fi.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fi_FI.xml b/make/data/cldr/common/main/fi_FI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fi_FI.xml rename to make/data/cldr/common/main/fi_FI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fil.xml b/make/data/cldr/common/main/fil.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fil.xml rename to make/data/cldr/common/main/fil.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fil_PH.xml b/make/data/cldr/common/main/fil_PH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fil_PH.xml rename to make/data/cldr/common/main/fil_PH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fo.xml b/make/data/cldr/common/main/fo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fo.xml rename to make/data/cldr/common/main/fo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fo_DK.xml b/make/data/cldr/common/main/fo_DK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fo_DK.xml rename to make/data/cldr/common/main/fo_DK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fo_FO.xml b/make/data/cldr/common/main/fo_FO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fo_FO.xml rename to make/data/cldr/common/main/fo_FO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr.xml b/make/data/cldr/common/main/fr.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr.xml rename to make/data/cldr/common/main/fr.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_BE.xml b/make/data/cldr/common/main/fr_BE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_BE.xml rename to make/data/cldr/common/main/fr_BE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_BF.xml b/make/data/cldr/common/main/fr_BF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_BF.xml rename to make/data/cldr/common/main/fr_BF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_BI.xml b/make/data/cldr/common/main/fr_BI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_BI.xml rename to make/data/cldr/common/main/fr_BI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_BJ.xml b/make/data/cldr/common/main/fr_BJ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_BJ.xml rename to make/data/cldr/common/main/fr_BJ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_BL.xml b/make/data/cldr/common/main/fr_BL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_BL.xml rename to make/data/cldr/common/main/fr_BL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CA.xml b/make/data/cldr/common/main/fr_CA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CA.xml rename to make/data/cldr/common/main/fr_CA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CD.xml b/make/data/cldr/common/main/fr_CD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CD.xml rename to make/data/cldr/common/main/fr_CD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CF.xml b/make/data/cldr/common/main/fr_CF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CF.xml rename to make/data/cldr/common/main/fr_CF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CG.xml b/make/data/cldr/common/main/fr_CG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CG.xml rename to make/data/cldr/common/main/fr_CG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CH.xml b/make/data/cldr/common/main/fr_CH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CH.xml rename to make/data/cldr/common/main/fr_CH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CI.xml b/make/data/cldr/common/main/fr_CI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CI.xml rename to make/data/cldr/common/main/fr_CI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CM.xml b/make/data/cldr/common/main/fr_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_CM.xml rename to make/data/cldr/common/main/fr_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_DJ.xml b/make/data/cldr/common/main/fr_DJ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_DJ.xml rename to make/data/cldr/common/main/fr_DJ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_DZ.xml b/make/data/cldr/common/main/fr_DZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_DZ.xml rename to make/data/cldr/common/main/fr_DZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_FR.xml b/make/data/cldr/common/main/fr_FR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_FR.xml rename to make/data/cldr/common/main/fr_FR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_GA.xml b/make/data/cldr/common/main/fr_GA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_GA.xml rename to make/data/cldr/common/main/fr_GA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_GF.xml b/make/data/cldr/common/main/fr_GF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_GF.xml rename to make/data/cldr/common/main/fr_GF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_GN.xml b/make/data/cldr/common/main/fr_GN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_GN.xml rename to make/data/cldr/common/main/fr_GN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_GP.xml b/make/data/cldr/common/main/fr_GP.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_GP.xml rename to make/data/cldr/common/main/fr_GP.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_GQ.xml b/make/data/cldr/common/main/fr_GQ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_GQ.xml rename to make/data/cldr/common/main/fr_GQ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_HT.xml b/make/data/cldr/common/main/fr_HT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_HT.xml rename to make/data/cldr/common/main/fr_HT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_KM.xml b/make/data/cldr/common/main/fr_KM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_KM.xml rename to make/data/cldr/common/main/fr_KM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_LU.xml b/make/data/cldr/common/main/fr_LU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_LU.xml rename to make/data/cldr/common/main/fr_LU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MA.xml b/make/data/cldr/common/main/fr_MA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MA.xml rename to make/data/cldr/common/main/fr_MA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MC.xml b/make/data/cldr/common/main/fr_MC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MC.xml rename to make/data/cldr/common/main/fr_MC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MF.xml b/make/data/cldr/common/main/fr_MF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MF.xml rename to make/data/cldr/common/main/fr_MF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MG.xml b/make/data/cldr/common/main/fr_MG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MG.xml rename to make/data/cldr/common/main/fr_MG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_ML.xml b/make/data/cldr/common/main/fr_ML.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_ML.xml rename to make/data/cldr/common/main/fr_ML.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MQ.xml b/make/data/cldr/common/main/fr_MQ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MQ.xml rename to make/data/cldr/common/main/fr_MQ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MR.xml b/make/data/cldr/common/main/fr_MR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MR.xml rename to make/data/cldr/common/main/fr_MR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MU.xml b/make/data/cldr/common/main/fr_MU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_MU.xml rename to make/data/cldr/common/main/fr_MU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_NC.xml b/make/data/cldr/common/main/fr_NC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_NC.xml rename to make/data/cldr/common/main/fr_NC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_NE.xml b/make/data/cldr/common/main/fr_NE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_NE.xml rename to make/data/cldr/common/main/fr_NE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_PF.xml b/make/data/cldr/common/main/fr_PF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_PF.xml rename to make/data/cldr/common/main/fr_PF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_PM.xml b/make/data/cldr/common/main/fr_PM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_PM.xml rename to make/data/cldr/common/main/fr_PM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_RE.xml b/make/data/cldr/common/main/fr_RE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_RE.xml rename to make/data/cldr/common/main/fr_RE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_RW.xml b/make/data/cldr/common/main/fr_RW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_RW.xml rename to make/data/cldr/common/main/fr_RW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_SC.xml b/make/data/cldr/common/main/fr_SC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_SC.xml rename to make/data/cldr/common/main/fr_SC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_SN.xml b/make/data/cldr/common/main/fr_SN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_SN.xml rename to make/data/cldr/common/main/fr_SN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_SY.xml b/make/data/cldr/common/main/fr_SY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_SY.xml rename to make/data/cldr/common/main/fr_SY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_TD.xml b/make/data/cldr/common/main/fr_TD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_TD.xml rename to make/data/cldr/common/main/fr_TD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_TG.xml b/make/data/cldr/common/main/fr_TG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_TG.xml rename to make/data/cldr/common/main/fr_TG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_TN.xml b/make/data/cldr/common/main/fr_TN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_TN.xml rename to make/data/cldr/common/main/fr_TN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_VU.xml b/make/data/cldr/common/main/fr_VU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_VU.xml rename to make/data/cldr/common/main/fr_VU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_WF.xml b/make/data/cldr/common/main/fr_WF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_WF.xml rename to make/data/cldr/common/main/fr_WF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_YT.xml b/make/data/cldr/common/main/fr_YT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fr_YT.xml rename to make/data/cldr/common/main/fr_YT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fur.xml b/make/data/cldr/common/main/fur.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fur.xml rename to make/data/cldr/common/main/fur.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fur_IT.xml b/make/data/cldr/common/main/fur_IT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fur_IT.xml rename to make/data/cldr/common/main/fur_IT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fy.xml b/make/data/cldr/common/main/fy.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fy.xml rename to make/data/cldr/common/main/fy.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fy_NL.xml b/make/data/cldr/common/main/fy_NL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/fy_NL.xml rename to make/data/cldr/common/main/fy_NL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ga.xml b/make/data/cldr/common/main/ga.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ga.xml rename to make/data/cldr/common/main/ga.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ga_IE.xml b/make/data/cldr/common/main/ga_IE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ga_IE.xml rename to make/data/cldr/common/main/ga_IE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gd.xml b/make/data/cldr/common/main/gd.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gd.xml rename to make/data/cldr/common/main/gd.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gd_GB.xml b/make/data/cldr/common/main/gd_GB.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gd_GB.xml rename to make/data/cldr/common/main/gd_GB.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gl.xml b/make/data/cldr/common/main/gl.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gl.xml rename to make/data/cldr/common/main/gl.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gl_ES.xml b/make/data/cldr/common/main/gl_ES.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gl_ES.xml rename to make/data/cldr/common/main/gl_ES.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gsw.xml b/make/data/cldr/common/main/gsw.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gsw.xml rename to make/data/cldr/common/main/gsw.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gsw_CH.xml b/make/data/cldr/common/main/gsw_CH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gsw_CH.xml rename to make/data/cldr/common/main/gsw_CH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gsw_FR.xml b/make/data/cldr/common/main/gsw_FR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gsw_FR.xml rename to make/data/cldr/common/main/gsw_FR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gsw_LI.xml b/make/data/cldr/common/main/gsw_LI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gsw_LI.xml rename to make/data/cldr/common/main/gsw_LI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gu.xml b/make/data/cldr/common/main/gu.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gu.xml rename to make/data/cldr/common/main/gu.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gu_IN.xml b/make/data/cldr/common/main/gu_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gu_IN.xml rename to make/data/cldr/common/main/gu_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/guz.xml b/make/data/cldr/common/main/guz.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/guz.xml rename to make/data/cldr/common/main/guz.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/guz_KE.xml b/make/data/cldr/common/main/guz_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/guz_KE.xml rename to make/data/cldr/common/main/guz_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gv.xml b/make/data/cldr/common/main/gv.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gv.xml rename to make/data/cldr/common/main/gv.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gv_IM.xml b/make/data/cldr/common/main/gv_IM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/gv_IM.xml rename to make/data/cldr/common/main/gv_IM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ha.xml b/make/data/cldr/common/main/ha.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ha.xml rename to make/data/cldr/common/main/ha.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ha_GH.xml b/make/data/cldr/common/main/ha_GH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ha_GH.xml rename to make/data/cldr/common/main/ha_GH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ha_NE.xml b/make/data/cldr/common/main/ha_NE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ha_NE.xml rename to make/data/cldr/common/main/ha_NE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ha_NG.xml b/make/data/cldr/common/main/ha_NG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ha_NG.xml rename to make/data/cldr/common/main/ha_NG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/haw.xml b/make/data/cldr/common/main/haw.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/haw.xml rename to make/data/cldr/common/main/haw.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/haw_US.xml b/make/data/cldr/common/main/haw_US.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/haw_US.xml rename to make/data/cldr/common/main/haw_US.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/he.xml b/make/data/cldr/common/main/he.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/he.xml rename to make/data/cldr/common/main/he.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/he_IL.xml b/make/data/cldr/common/main/he_IL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/he_IL.xml rename to make/data/cldr/common/main/he_IL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hi.xml b/make/data/cldr/common/main/hi.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hi.xml rename to make/data/cldr/common/main/hi.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hi_IN.xml b/make/data/cldr/common/main/hi_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hi_IN.xml rename to make/data/cldr/common/main/hi_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hr.xml b/make/data/cldr/common/main/hr.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hr.xml rename to make/data/cldr/common/main/hr.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hr_BA.xml b/make/data/cldr/common/main/hr_BA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hr_BA.xml rename to make/data/cldr/common/main/hr_BA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hr_HR.xml b/make/data/cldr/common/main/hr_HR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hr_HR.xml rename to make/data/cldr/common/main/hr_HR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hsb.xml b/make/data/cldr/common/main/hsb.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hsb.xml rename to make/data/cldr/common/main/hsb.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hsb_DE.xml b/make/data/cldr/common/main/hsb_DE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hsb_DE.xml rename to make/data/cldr/common/main/hsb_DE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hu.xml b/make/data/cldr/common/main/hu.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hu.xml rename to make/data/cldr/common/main/hu.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hu_HU.xml b/make/data/cldr/common/main/hu_HU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hu_HU.xml rename to make/data/cldr/common/main/hu_HU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hy.xml b/make/data/cldr/common/main/hy.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hy.xml rename to make/data/cldr/common/main/hy.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hy_AM.xml b/make/data/cldr/common/main/hy_AM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/hy_AM.xml rename to make/data/cldr/common/main/hy_AM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/id.xml b/make/data/cldr/common/main/id.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/id.xml rename to make/data/cldr/common/main/id.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/id_ID.xml b/make/data/cldr/common/main/id_ID.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/id_ID.xml rename to make/data/cldr/common/main/id_ID.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ig.xml b/make/data/cldr/common/main/ig.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ig.xml rename to make/data/cldr/common/main/ig.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ig_NG.xml b/make/data/cldr/common/main/ig_NG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ig_NG.xml rename to make/data/cldr/common/main/ig_NG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ii.xml b/make/data/cldr/common/main/ii.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ii.xml rename to make/data/cldr/common/main/ii.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ii_CN.xml b/make/data/cldr/common/main/ii_CN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ii_CN.xml rename to make/data/cldr/common/main/ii_CN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/is.xml b/make/data/cldr/common/main/is.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/is.xml rename to make/data/cldr/common/main/is.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/is_IS.xml b/make/data/cldr/common/main/is_IS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/is_IS.xml rename to make/data/cldr/common/main/is_IS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/it.xml b/make/data/cldr/common/main/it.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/it.xml rename to make/data/cldr/common/main/it.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/it_CH.xml b/make/data/cldr/common/main/it_CH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/it_CH.xml rename to make/data/cldr/common/main/it_CH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/it_IT.xml b/make/data/cldr/common/main/it_IT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/it_IT.xml rename to make/data/cldr/common/main/it_IT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/it_SM.xml b/make/data/cldr/common/main/it_SM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/it_SM.xml rename to make/data/cldr/common/main/it_SM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/it_VA.xml b/make/data/cldr/common/main/it_VA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/it_VA.xml rename to make/data/cldr/common/main/it_VA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ja.xml b/make/data/cldr/common/main/ja.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ja.xml rename to make/data/cldr/common/main/ja.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ja_JP.xml b/make/data/cldr/common/main/ja_JP.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ja_JP.xml rename to make/data/cldr/common/main/ja_JP.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/jgo.xml b/make/data/cldr/common/main/jgo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/jgo.xml rename to make/data/cldr/common/main/jgo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/jgo_CM.xml b/make/data/cldr/common/main/jgo_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/jgo_CM.xml rename to make/data/cldr/common/main/jgo_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/jmc.xml b/make/data/cldr/common/main/jmc.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/jmc.xml rename to make/data/cldr/common/main/jmc.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/jmc_TZ.xml b/make/data/cldr/common/main/jmc_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/jmc_TZ.xml rename to make/data/cldr/common/main/jmc_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ka.xml b/make/data/cldr/common/main/ka.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ka.xml rename to make/data/cldr/common/main/ka.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ka_GE.xml b/make/data/cldr/common/main/ka_GE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ka_GE.xml rename to make/data/cldr/common/main/ka_GE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kab.xml b/make/data/cldr/common/main/kab.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kab.xml rename to make/data/cldr/common/main/kab.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kab_DZ.xml b/make/data/cldr/common/main/kab_DZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kab_DZ.xml rename to make/data/cldr/common/main/kab_DZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kam.xml b/make/data/cldr/common/main/kam.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kam.xml rename to make/data/cldr/common/main/kam.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kam_KE.xml b/make/data/cldr/common/main/kam_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kam_KE.xml rename to make/data/cldr/common/main/kam_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kde.xml b/make/data/cldr/common/main/kde.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kde.xml rename to make/data/cldr/common/main/kde.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kde_TZ.xml b/make/data/cldr/common/main/kde_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kde_TZ.xml rename to make/data/cldr/common/main/kde_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kea.xml b/make/data/cldr/common/main/kea.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kea.xml rename to make/data/cldr/common/main/kea.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kea_CV.xml b/make/data/cldr/common/main/kea_CV.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kea_CV.xml rename to make/data/cldr/common/main/kea_CV.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/khq.xml b/make/data/cldr/common/main/khq.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/khq.xml rename to make/data/cldr/common/main/khq.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/khq_ML.xml b/make/data/cldr/common/main/khq_ML.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/khq_ML.xml rename to make/data/cldr/common/main/khq_ML.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ki.xml b/make/data/cldr/common/main/ki.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ki.xml rename to make/data/cldr/common/main/ki.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ki_KE.xml b/make/data/cldr/common/main/ki_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ki_KE.xml rename to make/data/cldr/common/main/ki_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kk.xml b/make/data/cldr/common/main/kk.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kk.xml rename to make/data/cldr/common/main/kk.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kk_KZ.xml b/make/data/cldr/common/main/kk_KZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kk_KZ.xml rename to make/data/cldr/common/main/kk_KZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kkj.xml b/make/data/cldr/common/main/kkj.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kkj.xml rename to make/data/cldr/common/main/kkj.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kkj_CM.xml b/make/data/cldr/common/main/kkj_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kkj_CM.xml rename to make/data/cldr/common/main/kkj_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kl.xml b/make/data/cldr/common/main/kl.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kl.xml rename to make/data/cldr/common/main/kl.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kl_GL.xml b/make/data/cldr/common/main/kl_GL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kl_GL.xml rename to make/data/cldr/common/main/kl_GL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kln.xml b/make/data/cldr/common/main/kln.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kln.xml rename to make/data/cldr/common/main/kln.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kln_KE.xml b/make/data/cldr/common/main/kln_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kln_KE.xml rename to make/data/cldr/common/main/kln_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/km.xml b/make/data/cldr/common/main/km.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/km.xml rename to make/data/cldr/common/main/km.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/km_KH.xml b/make/data/cldr/common/main/km_KH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/km_KH.xml rename to make/data/cldr/common/main/km_KH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kn.xml b/make/data/cldr/common/main/kn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kn.xml rename to make/data/cldr/common/main/kn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kn_IN.xml b/make/data/cldr/common/main/kn_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kn_IN.xml rename to make/data/cldr/common/main/kn_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ko.xml b/make/data/cldr/common/main/ko.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ko.xml rename to make/data/cldr/common/main/ko.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ko_KP.xml b/make/data/cldr/common/main/ko_KP.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ko_KP.xml rename to make/data/cldr/common/main/ko_KP.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ko_KR.xml b/make/data/cldr/common/main/ko_KR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ko_KR.xml rename to make/data/cldr/common/main/ko_KR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kok.xml b/make/data/cldr/common/main/kok.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kok.xml rename to make/data/cldr/common/main/kok.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kok_IN.xml b/make/data/cldr/common/main/kok_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kok_IN.xml rename to make/data/cldr/common/main/kok_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ks.xml b/make/data/cldr/common/main/ks.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ks.xml rename to make/data/cldr/common/main/ks.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ks_IN.xml b/make/data/cldr/common/main/ks_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ks_IN.xml rename to make/data/cldr/common/main/ks_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksb.xml b/make/data/cldr/common/main/ksb.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksb.xml rename to make/data/cldr/common/main/ksb.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksb_TZ.xml b/make/data/cldr/common/main/ksb_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksb_TZ.xml rename to make/data/cldr/common/main/ksb_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksf.xml b/make/data/cldr/common/main/ksf.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksf.xml rename to make/data/cldr/common/main/ksf.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksf_CM.xml b/make/data/cldr/common/main/ksf_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksf_CM.xml rename to make/data/cldr/common/main/ksf_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksh.xml b/make/data/cldr/common/main/ksh.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksh.xml rename to make/data/cldr/common/main/ksh.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksh_DE.xml b/make/data/cldr/common/main/ksh_DE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ksh_DE.xml rename to make/data/cldr/common/main/ksh_DE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kw.xml b/make/data/cldr/common/main/kw.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kw.xml rename to make/data/cldr/common/main/kw.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kw_GB.xml b/make/data/cldr/common/main/kw_GB.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/kw_GB.xml rename to make/data/cldr/common/main/kw_GB.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ky.xml b/make/data/cldr/common/main/ky.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ky.xml rename to make/data/cldr/common/main/ky.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ky_KG.xml b/make/data/cldr/common/main/ky_KG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ky_KG.xml rename to make/data/cldr/common/main/ky_KG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lag.xml b/make/data/cldr/common/main/lag.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lag.xml rename to make/data/cldr/common/main/lag.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lag_TZ.xml b/make/data/cldr/common/main/lag_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lag_TZ.xml rename to make/data/cldr/common/main/lag_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lb.xml b/make/data/cldr/common/main/lb.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lb.xml rename to make/data/cldr/common/main/lb.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lb_LU.xml b/make/data/cldr/common/main/lb_LU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lb_LU.xml rename to make/data/cldr/common/main/lb_LU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lg.xml b/make/data/cldr/common/main/lg.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lg.xml rename to make/data/cldr/common/main/lg.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lg_UG.xml b/make/data/cldr/common/main/lg_UG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lg_UG.xml rename to make/data/cldr/common/main/lg_UG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lkt.xml b/make/data/cldr/common/main/lkt.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lkt.xml rename to make/data/cldr/common/main/lkt.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lkt_US.xml b/make/data/cldr/common/main/lkt_US.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lkt_US.xml rename to make/data/cldr/common/main/lkt_US.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ln.xml b/make/data/cldr/common/main/ln.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ln.xml rename to make/data/cldr/common/main/ln.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ln_AO.xml b/make/data/cldr/common/main/ln_AO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ln_AO.xml rename to make/data/cldr/common/main/ln_AO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ln_CD.xml b/make/data/cldr/common/main/ln_CD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ln_CD.xml rename to make/data/cldr/common/main/ln_CD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ln_CF.xml b/make/data/cldr/common/main/ln_CF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ln_CF.xml rename to make/data/cldr/common/main/ln_CF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ln_CG.xml b/make/data/cldr/common/main/ln_CG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ln_CG.xml rename to make/data/cldr/common/main/ln_CG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lo.xml b/make/data/cldr/common/main/lo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lo.xml rename to make/data/cldr/common/main/lo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lo_LA.xml b/make/data/cldr/common/main/lo_LA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lo_LA.xml rename to make/data/cldr/common/main/lo_LA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lrc.xml b/make/data/cldr/common/main/lrc.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lrc.xml rename to make/data/cldr/common/main/lrc.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lrc_IQ.xml b/make/data/cldr/common/main/lrc_IQ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lrc_IQ.xml rename to make/data/cldr/common/main/lrc_IQ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lrc_IR.xml b/make/data/cldr/common/main/lrc_IR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lrc_IR.xml rename to make/data/cldr/common/main/lrc_IR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lt.xml b/make/data/cldr/common/main/lt.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lt.xml rename to make/data/cldr/common/main/lt.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lt_LT.xml b/make/data/cldr/common/main/lt_LT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lt_LT.xml rename to make/data/cldr/common/main/lt_LT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lu.xml b/make/data/cldr/common/main/lu.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lu.xml rename to make/data/cldr/common/main/lu.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lu_CD.xml b/make/data/cldr/common/main/lu_CD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lu_CD.xml rename to make/data/cldr/common/main/lu_CD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/luo.xml b/make/data/cldr/common/main/luo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/luo.xml rename to make/data/cldr/common/main/luo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/luo_KE.xml b/make/data/cldr/common/main/luo_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/luo_KE.xml rename to make/data/cldr/common/main/luo_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/luy.xml b/make/data/cldr/common/main/luy.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/luy.xml rename to make/data/cldr/common/main/luy.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/luy_KE.xml b/make/data/cldr/common/main/luy_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/luy_KE.xml rename to make/data/cldr/common/main/luy_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lv.xml b/make/data/cldr/common/main/lv.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lv.xml rename to make/data/cldr/common/main/lv.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lv_LV.xml b/make/data/cldr/common/main/lv_LV.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/lv_LV.xml rename to make/data/cldr/common/main/lv_LV.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mas.xml b/make/data/cldr/common/main/mas.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mas.xml rename to make/data/cldr/common/main/mas.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mas_KE.xml b/make/data/cldr/common/main/mas_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mas_KE.xml rename to make/data/cldr/common/main/mas_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mas_TZ.xml b/make/data/cldr/common/main/mas_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mas_TZ.xml rename to make/data/cldr/common/main/mas_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mer.xml b/make/data/cldr/common/main/mer.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mer.xml rename to make/data/cldr/common/main/mer.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mer_KE.xml b/make/data/cldr/common/main/mer_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mer_KE.xml rename to make/data/cldr/common/main/mer_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mfe.xml b/make/data/cldr/common/main/mfe.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mfe.xml rename to make/data/cldr/common/main/mfe.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mfe_MU.xml b/make/data/cldr/common/main/mfe_MU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mfe_MU.xml rename to make/data/cldr/common/main/mfe_MU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mg.xml b/make/data/cldr/common/main/mg.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mg.xml rename to make/data/cldr/common/main/mg.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mg_MG.xml b/make/data/cldr/common/main/mg_MG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mg_MG.xml rename to make/data/cldr/common/main/mg_MG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mgh.xml b/make/data/cldr/common/main/mgh.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mgh.xml rename to make/data/cldr/common/main/mgh.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mgh_MZ.xml b/make/data/cldr/common/main/mgh_MZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mgh_MZ.xml rename to make/data/cldr/common/main/mgh_MZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mgo.xml b/make/data/cldr/common/main/mgo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mgo.xml rename to make/data/cldr/common/main/mgo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mgo_CM.xml b/make/data/cldr/common/main/mgo_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mgo_CM.xml rename to make/data/cldr/common/main/mgo_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mk.xml b/make/data/cldr/common/main/mk.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mk.xml rename to make/data/cldr/common/main/mk.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mk_MK.xml b/make/data/cldr/common/main/mk_MK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mk_MK.xml rename to make/data/cldr/common/main/mk_MK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ml.xml b/make/data/cldr/common/main/ml.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ml.xml rename to make/data/cldr/common/main/ml.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ml_IN.xml b/make/data/cldr/common/main/ml_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ml_IN.xml rename to make/data/cldr/common/main/ml_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mn.xml b/make/data/cldr/common/main/mn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mn.xml rename to make/data/cldr/common/main/mn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mn_MN.xml b/make/data/cldr/common/main/mn_MN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mn_MN.xml rename to make/data/cldr/common/main/mn_MN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mr.xml b/make/data/cldr/common/main/mr.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mr.xml rename to make/data/cldr/common/main/mr.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mr_IN.xml b/make/data/cldr/common/main/mr_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mr_IN.xml rename to make/data/cldr/common/main/mr_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ms.xml b/make/data/cldr/common/main/ms.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ms.xml rename to make/data/cldr/common/main/ms.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ms_BN.xml b/make/data/cldr/common/main/ms_BN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ms_BN.xml rename to make/data/cldr/common/main/ms_BN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ms_MY.xml b/make/data/cldr/common/main/ms_MY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ms_MY.xml rename to make/data/cldr/common/main/ms_MY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ms_SG.xml b/make/data/cldr/common/main/ms_SG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ms_SG.xml rename to make/data/cldr/common/main/ms_SG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mt.xml b/make/data/cldr/common/main/mt.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mt.xml rename to make/data/cldr/common/main/mt.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mt_MT.xml b/make/data/cldr/common/main/mt_MT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mt_MT.xml rename to make/data/cldr/common/main/mt_MT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mua.xml b/make/data/cldr/common/main/mua.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mua.xml rename to make/data/cldr/common/main/mua.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mua_CM.xml b/make/data/cldr/common/main/mua_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mua_CM.xml rename to make/data/cldr/common/main/mua_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/my.xml b/make/data/cldr/common/main/my.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/my.xml rename to make/data/cldr/common/main/my.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/my_MM.xml b/make/data/cldr/common/main/my_MM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/my_MM.xml rename to make/data/cldr/common/main/my_MM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mzn.xml b/make/data/cldr/common/main/mzn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mzn.xml rename to make/data/cldr/common/main/mzn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mzn_IR.xml b/make/data/cldr/common/main/mzn_IR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/mzn_IR.xml rename to make/data/cldr/common/main/mzn_IR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/naq.xml b/make/data/cldr/common/main/naq.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/naq.xml rename to make/data/cldr/common/main/naq.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/naq_NA.xml b/make/data/cldr/common/main/naq_NA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/naq_NA.xml rename to make/data/cldr/common/main/naq_NA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nb.xml b/make/data/cldr/common/main/nb.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nb.xml rename to make/data/cldr/common/main/nb.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nb_NO.xml b/make/data/cldr/common/main/nb_NO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nb_NO.xml rename to make/data/cldr/common/main/nb_NO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nb_SJ.xml b/make/data/cldr/common/main/nb_SJ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nb_SJ.xml rename to make/data/cldr/common/main/nb_SJ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nd.xml b/make/data/cldr/common/main/nd.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nd.xml rename to make/data/cldr/common/main/nd.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nd_ZW.xml b/make/data/cldr/common/main/nd_ZW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nd_ZW.xml rename to make/data/cldr/common/main/nd_ZW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nds.xml b/make/data/cldr/common/main/nds.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nds.xml rename to make/data/cldr/common/main/nds.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nds_DE.xml b/make/data/cldr/common/main/nds_DE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nds_DE.xml rename to make/data/cldr/common/main/nds_DE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nds_NL.xml b/make/data/cldr/common/main/nds_NL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nds_NL.xml rename to make/data/cldr/common/main/nds_NL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ne.xml b/make/data/cldr/common/main/ne.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ne.xml rename to make/data/cldr/common/main/ne.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ne_IN.xml b/make/data/cldr/common/main/ne_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ne_IN.xml rename to make/data/cldr/common/main/ne_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ne_NP.xml b/make/data/cldr/common/main/ne_NP.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ne_NP.xml rename to make/data/cldr/common/main/ne_NP.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl.xml b/make/data/cldr/common/main/nl.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl.xml rename to make/data/cldr/common/main/nl.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_AW.xml b/make/data/cldr/common/main/nl_AW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_AW.xml rename to make/data/cldr/common/main/nl_AW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_BE.xml b/make/data/cldr/common/main/nl_BE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_BE.xml rename to make/data/cldr/common/main/nl_BE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_BQ.xml b/make/data/cldr/common/main/nl_BQ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_BQ.xml rename to make/data/cldr/common/main/nl_BQ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_CW.xml b/make/data/cldr/common/main/nl_CW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_CW.xml rename to make/data/cldr/common/main/nl_CW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_NL.xml b/make/data/cldr/common/main/nl_NL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_NL.xml rename to make/data/cldr/common/main/nl_NL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_SR.xml b/make/data/cldr/common/main/nl_SR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_SR.xml rename to make/data/cldr/common/main/nl_SR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_SX.xml b/make/data/cldr/common/main/nl_SX.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nl_SX.xml rename to make/data/cldr/common/main/nl_SX.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nmg.xml b/make/data/cldr/common/main/nmg.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nmg.xml rename to make/data/cldr/common/main/nmg.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nmg_CM.xml b/make/data/cldr/common/main/nmg_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nmg_CM.xml rename to make/data/cldr/common/main/nmg_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nn.xml b/make/data/cldr/common/main/nn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nn.xml rename to make/data/cldr/common/main/nn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nn_NO.xml b/make/data/cldr/common/main/nn_NO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nn_NO.xml rename to make/data/cldr/common/main/nn_NO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nnh.xml b/make/data/cldr/common/main/nnh.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nnh.xml rename to make/data/cldr/common/main/nnh.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nnh_CM.xml b/make/data/cldr/common/main/nnh_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nnh_CM.xml rename to make/data/cldr/common/main/nnh_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nus.xml b/make/data/cldr/common/main/nus.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nus.xml rename to make/data/cldr/common/main/nus.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nus_SS.xml b/make/data/cldr/common/main/nus_SS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nus_SS.xml rename to make/data/cldr/common/main/nus_SS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nyn.xml b/make/data/cldr/common/main/nyn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nyn.xml rename to make/data/cldr/common/main/nyn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nyn_UG.xml b/make/data/cldr/common/main/nyn_UG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/nyn_UG.xml rename to make/data/cldr/common/main/nyn_UG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/om.xml b/make/data/cldr/common/main/om.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/om.xml rename to make/data/cldr/common/main/om.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/om_ET.xml b/make/data/cldr/common/main/om_ET.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/om_ET.xml rename to make/data/cldr/common/main/om_ET.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/om_KE.xml b/make/data/cldr/common/main/om_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/om_KE.xml rename to make/data/cldr/common/main/om_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/or.xml b/make/data/cldr/common/main/or.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/or.xml rename to make/data/cldr/common/main/or.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/or_IN.xml b/make/data/cldr/common/main/or_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/or_IN.xml rename to make/data/cldr/common/main/or_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/os.xml b/make/data/cldr/common/main/os.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/os.xml rename to make/data/cldr/common/main/os.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/os_GE.xml b/make/data/cldr/common/main/os_GE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/os_GE.xml rename to make/data/cldr/common/main/os_GE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/os_RU.xml b/make/data/cldr/common/main/os_RU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/os_RU.xml rename to make/data/cldr/common/main/os_RU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pa.xml b/make/data/cldr/common/main/pa.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pa.xml rename to make/data/cldr/common/main/pa.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pa_Arab.xml b/make/data/cldr/common/main/pa_Arab.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pa_Arab.xml rename to make/data/cldr/common/main/pa_Arab.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pa_Arab_PK.xml b/make/data/cldr/common/main/pa_Arab_PK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pa_Arab_PK.xml rename to make/data/cldr/common/main/pa_Arab_PK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pa_Guru.xml b/make/data/cldr/common/main/pa_Guru.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pa_Guru.xml rename to make/data/cldr/common/main/pa_Guru.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pa_Guru_IN.xml b/make/data/cldr/common/main/pa_Guru_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pa_Guru_IN.xml rename to make/data/cldr/common/main/pa_Guru_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pl.xml b/make/data/cldr/common/main/pl.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pl.xml rename to make/data/cldr/common/main/pl.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pl_PL.xml b/make/data/cldr/common/main/pl_PL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pl_PL.xml rename to make/data/cldr/common/main/pl_PL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/prg.xml b/make/data/cldr/common/main/prg.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/prg.xml rename to make/data/cldr/common/main/prg.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/prg_001.xml b/make/data/cldr/common/main/prg_001.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/prg_001.xml rename to make/data/cldr/common/main/prg_001.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ps.xml b/make/data/cldr/common/main/ps.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ps.xml rename to make/data/cldr/common/main/ps.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ps_AF.xml b/make/data/cldr/common/main/ps_AF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ps_AF.xml rename to make/data/cldr/common/main/ps_AF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt.xml b/make/data/cldr/common/main/pt.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt.xml rename to make/data/cldr/common/main/pt.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_AO.xml b/make/data/cldr/common/main/pt_AO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_AO.xml rename to make/data/cldr/common/main/pt_AO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_BR.xml b/make/data/cldr/common/main/pt_BR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_BR.xml rename to make/data/cldr/common/main/pt_BR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_CH.xml b/make/data/cldr/common/main/pt_CH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_CH.xml rename to make/data/cldr/common/main/pt_CH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_CV.xml b/make/data/cldr/common/main/pt_CV.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_CV.xml rename to make/data/cldr/common/main/pt_CV.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_GQ.xml b/make/data/cldr/common/main/pt_GQ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_GQ.xml rename to make/data/cldr/common/main/pt_GQ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_GW.xml b/make/data/cldr/common/main/pt_GW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_GW.xml rename to make/data/cldr/common/main/pt_GW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_LU.xml b/make/data/cldr/common/main/pt_LU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_LU.xml rename to make/data/cldr/common/main/pt_LU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_MO.xml b/make/data/cldr/common/main/pt_MO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_MO.xml rename to make/data/cldr/common/main/pt_MO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_MZ.xml b/make/data/cldr/common/main/pt_MZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_MZ.xml rename to make/data/cldr/common/main/pt_MZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_PT.xml b/make/data/cldr/common/main/pt_PT.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_PT.xml rename to make/data/cldr/common/main/pt_PT.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_ST.xml b/make/data/cldr/common/main/pt_ST.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_ST.xml rename to make/data/cldr/common/main/pt_ST.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_TL.xml b/make/data/cldr/common/main/pt_TL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/pt_TL.xml rename to make/data/cldr/common/main/pt_TL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/qu.xml b/make/data/cldr/common/main/qu.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/qu.xml rename to make/data/cldr/common/main/qu.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/qu_BO.xml b/make/data/cldr/common/main/qu_BO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/qu_BO.xml rename to make/data/cldr/common/main/qu_BO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/qu_EC.xml b/make/data/cldr/common/main/qu_EC.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/qu_EC.xml rename to make/data/cldr/common/main/qu_EC.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/qu_PE.xml b/make/data/cldr/common/main/qu_PE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/qu_PE.xml rename to make/data/cldr/common/main/qu_PE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rm.xml b/make/data/cldr/common/main/rm.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rm.xml rename to make/data/cldr/common/main/rm.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rm_CH.xml b/make/data/cldr/common/main/rm_CH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rm_CH.xml rename to make/data/cldr/common/main/rm_CH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rn.xml b/make/data/cldr/common/main/rn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rn.xml rename to make/data/cldr/common/main/rn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rn_BI.xml b/make/data/cldr/common/main/rn_BI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rn_BI.xml rename to make/data/cldr/common/main/rn_BI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ro.xml b/make/data/cldr/common/main/ro.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ro.xml rename to make/data/cldr/common/main/ro.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ro_MD.xml b/make/data/cldr/common/main/ro_MD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ro_MD.xml rename to make/data/cldr/common/main/ro_MD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ro_RO.xml b/make/data/cldr/common/main/ro_RO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ro_RO.xml rename to make/data/cldr/common/main/ro_RO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rof.xml b/make/data/cldr/common/main/rof.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rof.xml rename to make/data/cldr/common/main/rof.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rof_TZ.xml b/make/data/cldr/common/main/rof_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rof_TZ.xml rename to make/data/cldr/common/main/rof_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/root.xml b/make/data/cldr/common/main/root.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/root.xml rename to make/data/cldr/common/main/root.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru.xml b/make/data/cldr/common/main/ru.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru.xml rename to make/data/cldr/common/main/ru.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_BY.xml b/make/data/cldr/common/main/ru_BY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_BY.xml rename to make/data/cldr/common/main/ru_BY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_KG.xml b/make/data/cldr/common/main/ru_KG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_KG.xml rename to make/data/cldr/common/main/ru_KG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_KZ.xml b/make/data/cldr/common/main/ru_KZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_KZ.xml rename to make/data/cldr/common/main/ru_KZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_MD.xml b/make/data/cldr/common/main/ru_MD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_MD.xml rename to make/data/cldr/common/main/ru_MD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_RU.xml b/make/data/cldr/common/main/ru_RU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_RU.xml rename to make/data/cldr/common/main/ru_RU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_UA.xml b/make/data/cldr/common/main/ru_UA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ru_UA.xml rename to make/data/cldr/common/main/ru_UA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rw.xml b/make/data/cldr/common/main/rw.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rw.xml rename to make/data/cldr/common/main/rw.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rw_RW.xml b/make/data/cldr/common/main/rw_RW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rw_RW.xml rename to make/data/cldr/common/main/rw_RW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rwk.xml b/make/data/cldr/common/main/rwk.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rwk.xml rename to make/data/cldr/common/main/rwk.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rwk_TZ.xml b/make/data/cldr/common/main/rwk_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/rwk_TZ.xml rename to make/data/cldr/common/main/rwk_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sah.xml b/make/data/cldr/common/main/sah.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sah.xml rename to make/data/cldr/common/main/sah.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sah_RU.xml b/make/data/cldr/common/main/sah_RU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sah_RU.xml rename to make/data/cldr/common/main/sah_RU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/saq.xml b/make/data/cldr/common/main/saq.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/saq.xml rename to make/data/cldr/common/main/saq.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/saq_KE.xml b/make/data/cldr/common/main/saq_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/saq_KE.xml rename to make/data/cldr/common/main/saq_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sbp.xml b/make/data/cldr/common/main/sbp.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sbp.xml rename to make/data/cldr/common/main/sbp.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sbp_TZ.xml b/make/data/cldr/common/main/sbp_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sbp_TZ.xml rename to make/data/cldr/common/main/sbp_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sd.xml b/make/data/cldr/common/main/sd.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sd.xml rename to make/data/cldr/common/main/sd.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sd_PK.xml b/make/data/cldr/common/main/sd_PK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sd_PK.xml rename to make/data/cldr/common/main/sd_PK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/se.xml b/make/data/cldr/common/main/se.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/se.xml rename to make/data/cldr/common/main/se.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/se_FI.xml b/make/data/cldr/common/main/se_FI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/se_FI.xml rename to make/data/cldr/common/main/se_FI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/se_NO.xml b/make/data/cldr/common/main/se_NO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/se_NO.xml rename to make/data/cldr/common/main/se_NO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/se_SE.xml b/make/data/cldr/common/main/se_SE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/se_SE.xml rename to make/data/cldr/common/main/se_SE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/seh.xml b/make/data/cldr/common/main/seh.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/seh.xml rename to make/data/cldr/common/main/seh.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/seh_MZ.xml b/make/data/cldr/common/main/seh_MZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/seh_MZ.xml rename to make/data/cldr/common/main/seh_MZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ses.xml b/make/data/cldr/common/main/ses.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ses.xml rename to make/data/cldr/common/main/ses.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ses_ML.xml b/make/data/cldr/common/main/ses_ML.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ses_ML.xml rename to make/data/cldr/common/main/ses_ML.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sg.xml b/make/data/cldr/common/main/sg.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sg.xml rename to make/data/cldr/common/main/sg.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sg_CF.xml b/make/data/cldr/common/main/sg_CF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sg_CF.xml rename to make/data/cldr/common/main/sg_CF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/shi.xml b/make/data/cldr/common/main/shi.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/shi.xml rename to make/data/cldr/common/main/shi.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/shi_Latn.xml b/make/data/cldr/common/main/shi_Latn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/shi_Latn.xml rename to make/data/cldr/common/main/shi_Latn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/shi_Latn_MA.xml b/make/data/cldr/common/main/shi_Latn_MA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/shi_Latn_MA.xml rename to make/data/cldr/common/main/shi_Latn_MA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/shi_Tfng.xml b/make/data/cldr/common/main/shi_Tfng.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/shi_Tfng.xml rename to make/data/cldr/common/main/shi_Tfng.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/shi_Tfng_MA.xml b/make/data/cldr/common/main/shi_Tfng_MA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/shi_Tfng_MA.xml rename to make/data/cldr/common/main/shi_Tfng_MA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/si.xml b/make/data/cldr/common/main/si.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/si.xml rename to make/data/cldr/common/main/si.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/si_LK.xml b/make/data/cldr/common/main/si_LK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/si_LK.xml rename to make/data/cldr/common/main/si_LK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sk.xml b/make/data/cldr/common/main/sk.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sk.xml rename to make/data/cldr/common/main/sk.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sk_SK.xml b/make/data/cldr/common/main/sk_SK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sk_SK.xml rename to make/data/cldr/common/main/sk_SK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sl.xml b/make/data/cldr/common/main/sl.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sl.xml rename to make/data/cldr/common/main/sl.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sl_SI.xml b/make/data/cldr/common/main/sl_SI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sl_SI.xml rename to make/data/cldr/common/main/sl_SI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/smn.xml b/make/data/cldr/common/main/smn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/smn.xml rename to make/data/cldr/common/main/smn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/smn_FI.xml b/make/data/cldr/common/main/smn_FI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/smn_FI.xml rename to make/data/cldr/common/main/smn_FI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sn.xml b/make/data/cldr/common/main/sn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sn.xml rename to make/data/cldr/common/main/sn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sn_ZW.xml b/make/data/cldr/common/main/sn_ZW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sn_ZW.xml rename to make/data/cldr/common/main/sn_ZW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/so.xml b/make/data/cldr/common/main/so.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/so.xml rename to make/data/cldr/common/main/so.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/so_DJ.xml b/make/data/cldr/common/main/so_DJ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/so_DJ.xml rename to make/data/cldr/common/main/so_DJ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/so_ET.xml b/make/data/cldr/common/main/so_ET.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/so_ET.xml rename to make/data/cldr/common/main/so_ET.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/so_KE.xml b/make/data/cldr/common/main/so_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/so_KE.xml rename to make/data/cldr/common/main/so_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/so_SO.xml b/make/data/cldr/common/main/so_SO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/so_SO.xml rename to make/data/cldr/common/main/so_SO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sq.xml b/make/data/cldr/common/main/sq.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sq.xml rename to make/data/cldr/common/main/sq.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sq_AL.xml b/make/data/cldr/common/main/sq_AL.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sq_AL.xml rename to make/data/cldr/common/main/sq_AL.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sq_MK.xml b/make/data/cldr/common/main/sq_MK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sq_MK.xml rename to make/data/cldr/common/main/sq_MK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sq_XK.xml b/make/data/cldr/common/main/sq_XK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sq_XK.xml rename to make/data/cldr/common/main/sq_XK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr.xml b/make/data/cldr/common/main/sr.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr.xml rename to make/data/cldr/common/main/sr.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Cyrl.xml b/make/data/cldr/common/main/sr_Cyrl.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Cyrl.xml rename to make/data/cldr/common/main/sr_Cyrl.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Cyrl_BA.xml b/make/data/cldr/common/main/sr_Cyrl_BA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Cyrl_BA.xml rename to make/data/cldr/common/main/sr_Cyrl_BA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Cyrl_ME.xml b/make/data/cldr/common/main/sr_Cyrl_ME.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Cyrl_ME.xml rename to make/data/cldr/common/main/sr_Cyrl_ME.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Cyrl_RS.xml b/make/data/cldr/common/main/sr_Cyrl_RS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Cyrl_RS.xml rename to make/data/cldr/common/main/sr_Cyrl_RS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Cyrl_XK.xml b/make/data/cldr/common/main/sr_Cyrl_XK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Cyrl_XK.xml rename to make/data/cldr/common/main/sr_Cyrl_XK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Latn.xml b/make/data/cldr/common/main/sr_Latn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Latn.xml rename to make/data/cldr/common/main/sr_Latn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Latn_BA.xml b/make/data/cldr/common/main/sr_Latn_BA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Latn_BA.xml rename to make/data/cldr/common/main/sr_Latn_BA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Latn_ME.xml b/make/data/cldr/common/main/sr_Latn_ME.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Latn_ME.xml rename to make/data/cldr/common/main/sr_Latn_ME.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Latn_RS.xml b/make/data/cldr/common/main/sr_Latn_RS.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Latn_RS.xml rename to make/data/cldr/common/main/sr_Latn_RS.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Latn_XK.xml b/make/data/cldr/common/main/sr_Latn_XK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sr_Latn_XK.xml rename to make/data/cldr/common/main/sr_Latn_XK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sv.xml b/make/data/cldr/common/main/sv.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sv.xml rename to make/data/cldr/common/main/sv.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sv_AX.xml b/make/data/cldr/common/main/sv_AX.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sv_AX.xml rename to make/data/cldr/common/main/sv_AX.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sv_FI.xml b/make/data/cldr/common/main/sv_FI.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sv_FI.xml rename to make/data/cldr/common/main/sv_FI.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sv_SE.xml b/make/data/cldr/common/main/sv_SE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sv_SE.xml rename to make/data/cldr/common/main/sv_SE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sw.xml b/make/data/cldr/common/main/sw.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sw.xml rename to make/data/cldr/common/main/sw.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sw_CD.xml b/make/data/cldr/common/main/sw_CD.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sw_CD.xml rename to make/data/cldr/common/main/sw_CD.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sw_KE.xml b/make/data/cldr/common/main/sw_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sw_KE.xml rename to make/data/cldr/common/main/sw_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sw_TZ.xml b/make/data/cldr/common/main/sw_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sw_TZ.xml rename to make/data/cldr/common/main/sw_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sw_UG.xml b/make/data/cldr/common/main/sw_UG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/sw_UG.xml rename to make/data/cldr/common/main/sw_UG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ta.xml b/make/data/cldr/common/main/ta.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ta.xml rename to make/data/cldr/common/main/ta.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ta_IN.xml b/make/data/cldr/common/main/ta_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ta_IN.xml rename to make/data/cldr/common/main/ta_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ta_LK.xml b/make/data/cldr/common/main/ta_LK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ta_LK.xml rename to make/data/cldr/common/main/ta_LK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ta_MY.xml b/make/data/cldr/common/main/ta_MY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ta_MY.xml rename to make/data/cldr/common/main/ta_MY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ta_SG.xml b/make/data/cldr/common/main/ta_SG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ta_SG.xml rename to make/data/cldr/common/main/ta_SG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/te.xml b/make/data/cldr/common/main/te.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/te.xml rename to make/data/cldr/common/main/te.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/te_IN.xml b/make/data/cldr/common/main/te_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/te_IN.xml rename to make/data/cldr/common/main/te_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/teo.xml b/make/data/cldr/common/main/teo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/teo.xml rename to make/data/cldr/common/main/teo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/teo_KE.xml b/make/data/cldr/common/main/teo_KE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/teo_KE.xml rename to make/data/cldr/common/main/teo_KE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/teo_UG.xml b/make/data/cldr/common/main/teo_UG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/teo_UG.xml rename to make/data/cldr/common/main/teo_UG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tg.xml b/make/data/cldr/common/main/tg.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tg.xml rename to make/data/cldr/common/main/tg.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tg_TJ.xml b/make/data/cldr/common/main/tg_TJ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tg_TJ.xml rename to make/data/cldr/common/main/tg_TJ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/th.xml b/make/data/cldr/common/main/th.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/th.xml rename to make/data/cldr/common/main/th.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/th_TH.xml b/make/data/cldr/common/main/th_TH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/th_TH.xml rename to make/data/cldr/common/main/th_TH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ti.xml b/make/data/cldr/common/main/ti.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ti.xml rename to make/data/cldr/common/main/ti.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ti_ER.xml b/make/data/cldr/common/main/ti_ER.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ti_ER.xml rename to make/data/cldr/common/main/ti_ER.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ti_ET.xml b/make/data/cldr/common/main/ti_ET.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ti_ET.xml rename to make/data/cldr/common/main/ti_ET.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tk.xml b/make/data/cldr/common/main/tk.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tk.xml rename to make/data/cldr/common/main/tk.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tk_TM.xml b/make/data/cldr/common/main/tk_TM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tk_TM.xml rename to make/data/cldr/common/main/tk_TM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/to.xml b/make/data/cldr/common/main/to.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/to.xml rename to make/data/cldr/common/main/to.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/to_TO.xml b/make/data/cldr/common/main/to_TO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/to_TO.xml rename to make/data/cldr/common/main/to_TO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tr.xml b/make/data/cldr/common/main/tr.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tr.xml rename to make/data/cldr/common/main/tr.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tr_CY.xml b/make/data/cldr/common/main/tr_CY.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tr_CY.xml rename to make/data/cldr/common/main/tr_CY.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tr_TR.xml b/make/data/cldr/common/main/tr_TR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tr_TR.xml rename to make/data/cldr/common/main/tr_TR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tt.xml b/make/data/cldr/common/main/tt.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tt.xml rename to make/data/cldr/common/main/tt.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tt_RU.xml b/make/data/cldr/common/main/tt_RU.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tt_RU.xml rename to make/data/cldr/common/main/tt_RU.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/twq.xml b/make/data/cldr/common/main/twq.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/twq.xml rename to make/data/cldr/common/main/twq.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/twq_NE.xml b/make/data/cldr/common/main/twq_NE.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/twq_NE.xml rename to make/data/cldr/common/main/twq_NE.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tzm.xml b/make/data/cldr/common/main/tzm.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tzm.xml rename to make/data/cldr/common/main/tzm.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tzm_MA.xml b/make/data/cldr/common/main/tzm_MA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/tzm_MA.xml rename to make/data/cldr/common/main/tzm_MA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ug.xml b/make/data/cldr/common/main/ug.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ug.xml rename to make/data/cldr/common/main/ug.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ug_CN.xml b/make/data/cldr/common/main/ug_CN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ug_CN.xml rename to make/data/cldr/common/main/ug_CN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uk.xml b/make/data/cldr/common/main/uk.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uk.xml rename to make/data/cldr/common/main/uk.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uk_UA.xml b/make/data/cldr/common/main/uk_UA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uk_UA.xml rename to make/data/cldr/common/main/uk_UA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ur.xml b/make/data/cldr/common/main/ur.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ur.xml rename to make/data/cldr/common/main/ur.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ur_IN.xml b/make/data/cldr/common/main/ur_IN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ur_IN.xml rename to make/data/cldr/common/main/ur_IN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ur_PK.xml b/make/data/cldr/common/main/ur_PK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/ur_PK.xml rename to make/data/cldr/common/main/ur_PK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz.xml b/make/data/cldr/common/main/uz.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz.xml rename to make/data/cldr/common/main/uz.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Arab.xml b/make/data/cldr/common/main/uz_Arab.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Arab.xml rename to make/data/cldr/common/main/uz_Arab.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Arab_AF.xml b/make/data/cldr/common/main/uz_Arab_AF.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Arab_AF.xml rename to make/data/cldr/common/main/uz_Arab_AF.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Cyrl.xml b/make/data/cldr/common/main/uz_Cyrl.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Cyrl.xml rename to make/data/cldr/common/main/uz_Cyrl.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Cyrl_UZ.xml b/make/data/cldr/common/main/uz_Cyrl_UZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Cyrl_UZ.xml rename to make/data/cldr/common/main/uz_Cyrl_UZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Latn.xml b/make/data/cldr/common/main/uz_Latn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Latn.xml rename to make/data/cldr/common/main/uz_Latn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Latn_UZ.xml b/make/data/cldr/common/main/uz_Latn_UZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/uz_Latn_UZ.xml rename to make/data/cldr/common/main/uz_Latn_UZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vai.xml b/make/data/cldr/common/main/vai.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vai.xml rename to make/data/cldr/common/main/vai.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vai_Latn.xml b/make/data/cldr/common/main/vai_Latn.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vai_Latn.xml rename to make/data/cldr/common/main/vai_Latn.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vai_Latn_LR.xml b/make/data/cldr/common/main/vai_Latn_LR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vai_Latn_LR.xml rename to make/data/cldr/common/main/vai_Latn_LR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vai_Vaii.xml b/make/data/cldr/common/main/vai_Vaii.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vai_Vaii.xml rename to make/data/cldr/common/main/vai_Vaii.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vai_Vaii_LR.xml b/make/data/cldr/common/main/vai_Vaii_LR.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vai_Vaii_LR.xml rename to make/data/cldr/common/main/vai_Vaii_LR.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vi.xml b/make/data/cldr/common/main/vi.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vi.xml rename to make/data/cldr/common/main/vi.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vi_VN.xml b/make/data/cldr/common/main/vi_VN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vi_VN.xml rename to make/data/cldr/common/main/vi_VN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vo.xml b/make/data/cldr/common/main/vo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vo.xml rename to make/data/cldr/common/main/vo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vo_001.xml b/make/data/cldr/common/main/vo_001.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vo_001.xml rename to make/data/cldr/common/main/vo_001.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vun.xml b/make/data/cldr/common/main/vun.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vun.xml rename to make/data/cldr/common/main/vun.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vun_TZ.xml b/make/data/cldr/common/main/vun_TZ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/vun_TZ.xml rename to make/data/cldr/common/main/vun_TZ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/wae.xml b/make/data/cldr/common/main/wae.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/wae.xml rename to make/data/cldr/common/main/wae.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/wae_CH.xml b/make/data/cldr/common/main/wae_CH.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/wae_CH.xml rename to make/data/cldr/common/main/wae_CH.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/wo.xml b/make/data/cldr/common/main/wo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/wo.xml rename to make/data/cldr/common/main/wo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/wo_SN.xml b/make/data/cldr/common/main/wo_SN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/wo_SN.xml rename to make/data/cldr/common/main/wo_SN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/xog.xml b/make/data/cldr/common/main/xog.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/xog.xml rename to make/data/cldr/common/main/xog.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/xog_UG.xml b/make/data/cldr/common/main/xog_UG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/xog_UG.xml rename to make/data/cldr/common/main/xog_UG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yav.xml b/make/data/cldr/common/main/yav.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yav.xml rename to make/data/cldr/common/main/yav.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yav_CM.xml b/make/data/cldr/common/main/yav_CM.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yav_CM.xml rename to make/data/cldr/common/main/yav_CM.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yi.xml b/make/data/cldr/common/main/yi.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yi.xml rename to make/data/cldr/common/main/yi.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yi_001.xml b/make/data/cldr/common/main/yi_001.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yi_001.xml rename to make/data/cldr/common/main/yi_001.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yo.xml b/make/data/cldr/common/main/yo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yo.xml rename to make/data/cldr/common/main/yo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yo_BJ.xml b/make/data/cldr/common/main/yo_BJ.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yo_BJ.xml rename to make/data/cldr/common/main/yo_BJ.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yo_NG.xml b/make/data/cldr/common/main/yo_NG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yo_NG.xml rename to make/data/cldr/common/main/yo_NG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue.xml b/make/data/cldr/common/main/yue.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue.xml rename to make/data/cldr/common/main/yue.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue_HK.xml b/make/data/cldr/common/main/yue_HK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue_HK.xml rename to make/data/cldr/common/main/yue_HK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue_Hans.xml b/make/data/cldr/common/main/yue_Hans.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue_Hans.xml rename to make/data/cldr/common/main/yue_Hans.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue_Hans_CN.xml b/make/data/cldr/common/main/yue_Hans_CN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue_Hans_CN.xml rename to make/data/cldr/common/main/yue_Hans_CN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue_Hant.xml b/make/data/cldr/common/main/yue_Hant.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue_Hant.xml rename to make/data/cldr/common/main/yue_Hant.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue_Hant_HK.xml b/make/data/cldr/common/main/yue_Hant_HK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/yue_Hant_HK.xml rename to make/data/cldr/common/main/yue_Hant_HK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zgh.xml b/make/data/cldr/common/main/zgh.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zgh.xml rename to make/data/cldr/common/main/zgh.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zgh_MA.xml b/make/data/cldr/common/main/zgh_MA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zgh_MA.xml rename to make/data/cldr/common/main/zgh_MA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh.xml b/make/data/cldr/common/main/zh.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh.xml rename to make/data/cldr/common/main/zh.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hans.xml b/make/data/cldr/common/main/zh_Hans.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hans.xml rename to make/data/cldr/common/main/zh_Hans.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hans_CN.xml b/make/data/cldr/common/main/zh_Hans_CN.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hans_CN.xml rename to make/data/cldr/common/main/zh_Hans_CN.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hans_HK.xml b/make/data/cldr/common/main/zh_Hans_HK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hans_HK.xml rename to make/data/cldr/common/main/zh_Hans_HK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hans_MO.xml b/make/data/cldr/common/main/zh_Hans_MO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hans_MO.xml rename to make/data/cldr/common/main/zh_Hans_MO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hans_SG.xml b/make/data/cldr/common/main/zh_Hans_SG.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hans_SG.xml rename to make/data/cldr/common/main/zh_Hans_SG.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hant.xml b/make/data/cldr/common/main/zh_Hant.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hant.xml rename to make/data/cldr/common/main/zh_Hant.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hant_HK.xml b/make/data/cldr/common/main/zh_Hant_HK.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hant_HK.xml rename to make/data/cldr/common/main/zh_Hant_HK.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hant_MO.xml b/make/data/cldr/common/main/zh_Hant_MO.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hant_MO.xml rename to make/data/cldr/common/main/zh_Hant_MO.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hant_TW.xml b/make/data/cldr/common/main/zh_Hant_TW.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zh_Hant_TW.xml rename to make/data/cldr/common/main/zh_Hant_TW.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zu.xml b/make/data/cldr/common/main/zu.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zu.xml rename to make/data/cldr/common/main/zu.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zu_ZA.xml b/make/data/cldr/common/main/zu_ZA.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/main/zu_ZA.xml rename to make/data/cldr/common/main/zu_ZA.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/attributeValueValidity.xml b/make/data/cldr/common/supplemental/attributeValueValidity.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/attributeValueValidity.xml rename to make/data/cldr/common/supplemental/attributeValueValidity.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/characters.xml b/make/data/cldr/common/supplemental/characters.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/characters.xml rename to make/data/cldr/common/supplemental/characters.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/coverageLevels.xml b/make/data/cldr/common/supplemental/coverageLevels.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/coverageLevels.xml rename to make/data/cldr/common/supplemental/coverageLevels.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/dayPeriods.xml b/make/data/cldr/common/supplemental/dayPeriods.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/dayPeriods.xml rename to make/data/cldr/common/supplemental/dayPeriods.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/genderList.xml b/make/data/cldr/common/supplemental/genderList.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/genderList.xml rename to make/data/cldr/common/supplemental/genderList.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/languageInfo.xml b/make/data/cldr/common/supplemental/languageInfo.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/languageInfo.xml rename to make/data/cldr/common/supplemental/languageInfo.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/likelySubtags.xml b/make/data/cldr/common/supplemental/likelySubtags.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/likelySubtags.xml rename to make/data/cldr/common/supplemental/likelySubtags.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/metaZones.xml b/make/data/cldr/common/supplemental/metaZones.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/metaZones.xml rename to make/data/cldr/common/supplemental/metaZones.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/numberingSystems.xml b/make/data/cldr/common/supplemental/numberingSystems.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/numberingSystems.xml rename to make/data/cldr/common/supplemental/numberingSystems.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/ordinals.xml b/make/data/cldr/common/supplemental/ordinals.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/ordinals.xml rename to make/data/cldr/common/supplemental/ordinals.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/pluralRanges.xml b/make/data/cldr/common/supplemental/pluralRanges.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/pluralRanges.xml rename to make/data/cldr/common/supplemental/pluralRanges.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/plurals.xml b/make/data/cldr/common/supplemental/plurals.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/plurals.xml rename to make/data/cldr/common/supplemental/plurals.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/rgScope.xml b/make/data/cldr/common/supplemental/rgScope.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/rgScope.xml rename to make/data/cldr/common/supplemental/rgScope.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/subdivisions.xml b/make/data/cldr/common/supplemental/subdivisions.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/subdivisions.xml rename to make/data/cldr/common/supplemental/subdivisions.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/supplementalData.xml b/make/data/cldr/common/supplemental/supplementalData.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/supplementalData.xml rename to make/data/cldr/common/supplemental/supplementalData.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/supplementalMetadata.xml b/make/data/cldr/common/supplemental/supplementalMetadata.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/supplementalMetadata.xml rename to make/data/cldr/common/supplemental/supplementalMetadata.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/telephoneCodeData.xml b/make/data/cldr/common/supplemental/telephoneCodeData.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/telephoneCodeData.xml rename to make/data/cldr/common/supplemental/telephoneCodeData.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/windowsZones.xml b/make/data/cldr/common/supplemental/windowsZones.xml similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/common/supplemental/windowsZones.xml rename to make/data/cldr/common/supplemental/windowsZones.xml diff --git a/src/jdk.localedata/share/classes/sun/util/cldr/resources/unicode-license.txt b/make/data/cldr/unicode-license.txt similarity index 100% rename from src/jdk.localedata/share/classes/sun/util/cldr/resources/unicode-license.txt rename to make/data/cldr/unicode-license.txt diff --git a/make/gensrc/Gensrc-java.base.gmk b/make/gensrc/Gensrc-java.base.gmk index 3aaae2cedb3..26300111d99 100644 --- a/make/gensrc/Gensrc-java.base.gmk +++ b/make/gensrc/Gensrc-java.base.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,6 @@ include GensrcCommonJdk.gmk include GensrcLocaleData.gmk -include GensrcCLDR.gmk include GensrcCharacterData.gmk include GensrcMisc.gmk include GensrcCharsetMapping.gmk @@ -38,6 +37,33 @@ include GensrcModuleLoaderMap.gmk ################################################################################ +CLDR_DATA_DIR := $(TOPDIR)/make/data/cldr/common +GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base +CLDR_GEN_DONE := $(GENSRC_DIR)/_cldr-gensrc.marker +TZ_DATA_DIR := $(TOPDIR)/make/data/tzdata +ZONENAME_TEMPLATE := $(TOPDIR)/src/java.base/share/classes/java/time/format/ZoneName.java.template + +$(CLDR_GEN_DONE): $(wildcard $(CLDR_DATA_DIR)/dtd/*.dtd) \ + $(wildcard $(CLDR_DATA_DIR)/main/en*.xml) \ + $(wildcard $(CLDR_DATA_DIR)/supplemental/*.xml) \ + $(wildcard $(TZ_DATA_DIR)/*) \ + $(ZONENAME_TEMPLATE) \ + $(BUILD_TOOLS_JDK) + $(call MakeDir, $(GENSRC_DIR)) + $(call LogInfo, Processing CLDR data for java.base) + $(call ExecuteWithLog, $@, \ + $(TOOL_CLDRCONVERTER) -base $(CLDR_DATA_DIR) \ + -baselocales "en-US" \ + -o $(GENSRC_DIR) \ + -basemodule \ + -zntempfile $(ZONENAME_TEMPLATE) \ + -tzdatadir $(TZ_DATA_DIR)) + $(TOUCH) $@ + +GENSRC_JAVA_BASE += $(CLDR_GEN_DONE) + +################################################################################ + include GensrcProperties.gmk $(eval $(call SetupCompileProperties, LIST_RESOURCE_BUNDLE, \ diff --git a/make/gensrc/Gensrc-jdk.localedata.gmk b/make/gensrc/Gensrc-jdk.localedata.gmk index c05b26d5af1..d7fc8ef226b 100644 --- a/make/gensrc/Gensrc-jdk.localedata.gmk +++ b/make/gensrc/Gensrc-jdk.localedata.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -29,7 +29,26 @@ include GensrcCommonJdk.gmk $(eval $(call IncludeCustomExtension, gensrc/Gensrc-jdk.localedata.gmk)) include GensrcLocaleData.gmk -include GensrcCLDR.gmk + +################################################################################ + +CLDR_DATA_DIR := $(TOPDIR)/make/data/cldr/common +GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.localedata +CLDR_GEN_DONE := $(GENSRC_DIR)/_cldr-gensrc.marker + +$(CLDR_GEN_DONE): $(wildcard $(CLDR_DATA_DIR)/dtd/*.dtd) \ + $(wildcard $(CLDR_DATA_DIR)/main/*.xml) \ + $(wildcard $(CLDR_DATA_DIR)/supplemental/*.xml) \ + $(BUILD_TOOLS_JDK) + $(call MakeDir, $(GENSRC_DIR)) + $(call LogInfo, Processing CLDR data for jdk.localedata) + $(call ExecuteWithLog, $@, \ + $(TOOL_CLDRCONVERTER) -base $(CLDR_DATA_DIR) \ + -baselocales "en-US" \ + -o $(GENSRC_DIR)) + $(TOUCH) $@ + +GENSRC_JDK_LOCALEDATA += $(CLDR_GEN_DONE) ################################################################################ diff --git a/make/gensrc/GensrcCLDR.gmk b/make/gensrc/GensrcCLDR.gmk deleted file mode 100644 index 7206e4f572c..00000000000 --- a/make/gensrc/GensrcCLDR.gmk +++ /dev/null @@ -1,71 +0,0 @@ -# -# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. 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. -# - -CLDRVERSION := 33 -CLDRSRCDIR := $(TOPDIR)/src/jdk.localedata/share/classes/sun/util/cldr/resources/common - -GENSRC_BASEDIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base -GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.localedata - -CLDR_BASEMETAINFO_FILE := $(GENSRC_BASEDIR)/sun/util/cldr/CLDRBaseLocaleDataMetaInfo.java -CLDR_METAINFO_FILE := $(GENSRC_DIR)/sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.java - -CLDR_BASE_LOCALES := "en-US" - -ZONENAME_TEMPLATE := $(TOPDIR)/src/java.base/share/classes/java/time/format/ZoneName.java.template -TZDATA_DIR := $(TOPDIR)/make/data/tzdata - -# tzmappings generation for Windows. -# Since the rule is shared with CLDR_BASEMETAINFO_FILE target, note that -# just removing the target tzmappings will not recreate the tzmappings file. -ifeq ($(OPENJDK_TARGET_OS), windows) - CLDR_WINTZMAPPINGS := $(GENSRC_BASEDIR)/windows/conf/tzmappings - $(CLDR_WINTZMAPPINGS): $(CLDR_BASEMETAINFO_FILE) -endif - -$(CLDR_BASEMETAINFO_FILE): $(wildcard $(CLDRSRCDIR)/dtd/*.dtd) \ - $(wildcard $(CLDRSRCDIR)/main/en*.xml) \ - $(wildcard $(CLDRSRCDIR)/supplemental/*.xml) \ - $(ZONENAME_TEMPLATE) \ - $(BUILD_TOOLS_JDK) - $(call MakeDir, $(GENSRC_BASEDIR)) - $(TOOL_CLDRCONVERTER) -base $(CLDRSRCDIR) \ - -baselocales $(CLDR_BASE_LOCALES) \ - -o $(GENSRC_BASEDIR) \ - -basemodule \ - -zntempfile $(ZONENAME_TEMPLATE) \ - -tzdatadir $(TZDATA_DIR) - -$(CLDR_METAINFO_FILE): $(wildcard $(CLDRSRCDIR)/dtd/*.dtd) \ - $(wildcard $(CLDRSRCDIR)/main/*.xml) \ - $(wildcard $(CLDRSRCDIR)/supplemental/*.xml) \ - $(BUILD_TOOLS_JDK) - $(call MakeDir, $(GENSRC_DIR)) - $(TOOL_CLDRCONVERTER) -base $(CLDRSRCDIR) \ - -baselocales $(CLDR_BASE_LOCALES) \ - -o $(GENSRC_DIR) - -GENSRC_JAVA_BASE += $(CLDR_BASEMETAINFO_FILE) $(CLDR_WINTZMAPPINGS) -GENSRC_JDK_LOCALEDATA += $(CLDR_METAINFO_FILE) From 6c640e183143f88d7c087efc0659979675f4f09c Mon Sep 17 00:00:00 2001 From: Roland Westrelin Date: Tue, 18 Dec 2018 09:29:39 +0100 Subject: [PATCH 12/36] 8215483: Off heap memory accesses should be vectorized Reviewed-by: neliasso, kvn --- src/hotspot/cpu/aarch64/aarch64.ad | 4 ++-- src/hotspot/cpu/ppc/ppc.ad | 5 +++-- src/hotspot/cpu/x86/x86.ad | 2 +- src/hotspot/share/opto/superword.cpp | 22 ++++++++++++++++------ 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/hotspot/cpu/aarch64/aarch64.ad b/src/hotspot/cpu/aarch64/aarch64.ad index babb86c90dc..a3a2a9f5426 100644 --- a/src/hotspot/cpu/aarch64/aarch64.ad +++ b/src/hotspot/cpu/aarch64/aarch64.ad @@ -2146,9 +2146,9 @@ const bool Matcher::pass_original_key_for_aes() { return false; } -// x86 supports misaligned vectors store/load. +// aarch64 supports misaligned vectors store/load. const bool Matcher::misaligned_vectors_ok() { - return !AlignVector; // can be changed by flag + return true; } // false => size gets scaled to BytesPerLong, ok. diff --git a/src/hotspot/cpu/ppc/ppc.ad b/src/hotspot/cpu/ppc/ppc.ad index f9cc2c59fb0..aea3ddc1582 100644 --- a/src/hotspot/cpu/ppc/ppc.ad +++ b/src/hotspot/cpu/ppc/ppc.ad @@ -2338,9 +2338,10 @@ const int Matcher::min_vector_size(const BasicType bt) { return max_vector_size(bt); // Same as max. } -// PPC doesn't support misaligned vectors store/load. +// PPC implementation uses VSX load/store instructions (if +// SuperwordUseVSX) which support 4 byte but not arbitrary alignment const bool Matcher::misaligned_vectors_ok() { - return !AlignVector; // can be changed by flag + return false; } // PPC AES support not yet implemented diff --git a/src/hotspot/cpu/x86/x86.ad b/src/hotspot/cpu/x86/x86.ad index 2005b67d1dd..f6df37e6a5a 100644 --- a/src/hotspot/cpu/x86/x86.ad +++ b/src/hotspot/cpu/x86/x86.ad @@ -1585,7 +1585,7 @@ const uint Matcher::vector_shift_count_ideal_reg(int size) { // x86 supports misaligned vectors store/load. const bool Matcher::misaligned_vectors_ok() { - return !AlignVector; // can be changed by flag + return true; } // x86 AES instructions are compatible with SunJCE expanded diff --git a/src/hotspot/share/opto/superword.cpp b/src/hotspot/share/opto/superword.cpp index c5ee934ae7c..71b1cd60134 100644 --- a/src/hotspot/share/opto/superword.cpp +++ b/src/hotspot/share/opto/superword.cpp @@ -613,7 +613,7 @@ void SuperWord::find_adjacent_refs() { // alignment is set and vectors will be aligned. bool create_pack = true; if (memory_alignment(mem_ref, best_iv_adjustment) == 0 || _do_vector_loop) { - if (!Matcher::misaligned_vectors_ok()) { + if (!Matcher::misaligned_vectors_ok() || AlignVector) { int vw = vector_width(mem_ref); int vw_best = vector_width(best_align_to_mem_ref); if (vw > vw_best) { @@ -638,7 +638,7 @@ void SuperWord::find_adjacent_refs() { } else { // Allow independent (different type) unaligned memory operations // if HW supports them. - if (!Matcher::misaligned_vectors_ok()) { + if (!Matcher::misaligned_vectors_ok() || AlignVector) { create_pack = false; } else { // Check if packs of the same memory type but @@ -3372,9 +3372,9 @@ void SuperWord::align_initial_loop_index(MemNode* align_to_ref) { _igvn.register_new_node_with_optimizer(e); _phase->set_ctrl(e, pre_ctrl); } - if (vw > ObjectAlignmentInBytes) { + if (vw > ObjectAlignmentInBytes || align_to_ref_p.base()->is_top()) { // incorporate base e +/- base && Mask >>> log2(elt) - Node* xbase = new CastP2XNode(NULL, align_to_ref_p.base()); + Node* xbase = new CastP2XNode(NULL, align_to_ref_p.adr()); _igvn.register_new_node_with_optimizer(xbase); #ifdef _LP64 xbase = new ConvL2INode(xbase); @@ -3566,8 +3566,8 @@ SWPointer::SWPointer(MemNode* mem, SuperWord* slp, Node_Stack *nstack, bool anal assert(!valid(), "base address is loop variant"); return; } - //unsafe reference could not be aligned appropriately without runtime checking - if (base == NULL || base->bottom_type() == Type::TOP) { + // unsafe references require misaligned vector access support + if (base->is_top() && !Matcher::misaligned_vectors_ok()) { assert(!valid(), "unsafe access"); return; } @@ -3591,6 +3591,16 @@ SWPointer::SWPointer(MemNode* mem, SuperWord* slp, Node_Stack *nstack, bool anal break; // stop looking at addp's } } + if (!invariant(adr)) { + assert(!valid(), "adr is loop variant"); + return; + } + + if (!base->is_top() && adr != base) { + assert(!valid(), "adr and base differ"); + return; + } + NOT_PRODUCT(if(_slp->is_trace_alignment()) _tracer.restore_depth();) NOT_PRODUCT(_tracer.ctor_6(mem);) From fc31592f6ea3676f53be4ac4c6c4c796901601c8 Mon Sep 17 00:00:00 2001 From: Ao Qi Date: Thu, 31 Jan 2019 23:56:37 +0800 Subject: [PATCH 13/36] 8217597: [TESTBUG] old version docker does not support --cpus "--cpus" is only available in Docker 1.13 and higher, and is the equivalent of setting both --cpu-period and --cpu-quota. Reviewed-by: bobv, dholmes --- .../jtreg/runtime/containers/docker/TestCPUAwareness.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/hotspot/jtreg/runtime/containers/docker/TestCPUAwareness.java b/test/hotspot/jtreg/runtime/containers/docker/TestCPUAwareness.java index 42a838a1971..340772f8371 100644 --- a/test/hotspot/jtreg/runtime/containers/docker/TestCPUAwareness.java +++ b/test/hotspot/jtreg/runtime/containers/docker/TestCPUAwareness.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -129,7 +129,8 @@ public class TestCPUAwareness { private static void testCpus(int valueToSet, int expectedTraceValue) throws Exception { Common.logNewTestCase("test cpus: " + valueToSet); DockerRunOptions opts = Common.newOpts(imageName) - .addDockerOpts("--cpus", "" + valueToSet); + .addDockerOpts("--cpu-period=" + 10000) + .addDockerOpts("--cpu-quota=" + valueToSet * 10000); Common.run(opts) .shouldMatch("active_processor_count.*" + expectedTraceValue); } From ac1b5fb59a2a48e50a16510eca81793a77c31bbd Mon Sep 17 00:00:00 2001 From: Igor Ignatyev Date: Mon, 4 Feb 2019 17:53:26 -0800 Subject: [PATCH 14/36] 8218197: [failurehandler] parent processes shouldn't be killed till their children are handle Reviewed-by: dholmes, kbarrett --- .../jdk/test/failurehandler/HtmlSection.java | 14 +++++----- .../jdk/test/failurehandler/ToolKit.java | 26 ++++++++++++------- .../failurehandler/action/ActionHelper.java | 4 +-- .../failurehandler/action/PatternAction.java | 4 +-- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlSection.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlSection.java index d20b13360a5..833f1c69bd2 100644 --- a/test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlSection.java +++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlSection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -153,13 +153,11 @@ public class HtmlSection { public HtmlSection createChildren(String[] sections) { int i = 0; int n = sections.length; - HtmlSection current = rootSection; - if (current != null) { - for (; i < n && current.child != null; - ++i, current = current.child) { - if (!sections[i].equals(current.child.name)) { - break; - } + HtmlSection current = this; + for (; i < n && current.child != null; + ++i, current = current.child) { + if (!sections[i].equals(current.child.name)) { + break; } } for (; i < n; ++i) { diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/ToolKit.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/ToolKit.java index beeca058595..58c55b0625e 100644 --- a/test/failure_handler/src/share/classes/jdk/test/failurehandler/ToolKit.java +++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/ToolKit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; +import java.util.Deque; public class ToolKit implements EnvironmentInfoGatherer, ProcessInfoGatherer { private final List actions = new ArrayList<>(); @@ -52,20 +53,27 @@ public class ToolKit implements EnvironmentInfoGatherer, ProcessInfoGatherer { @Override public void gatherProcessInfo(HtmlSection section, long pid) { - Queue pids = new LinkedList<>(); - pids.add(pid); - for (Long p = pids.poll(); p != null; p = pids.poll()) { - HtmlSection pidSection = section.createChildren("" + p); - List children = helper.getChildren(pidSection, p); + // as some of actions can kill a process, we need to get children of all + // test process first, and run the actions starting from the leaves + // and going up by the process tree + Deque orderedPids = new LinkedList<>(); + Queue testPids = new LinkedList<>(); + testPids.add(pid); + HtmlSection ptreeSection = section.createChildren("test_processes"); + for (Long p = testPids.poll(); p != null; p = testPids.poll()) { + orderedPids.addFirst(p); + List children = helper.getChildren(ptreeSection, p); if (!children.isEmpty()) { - HtmlSection s = pidSection.createChildren("children"); + HtmlSection s = ptreeSection.createChildren("" + p); for (Long c : children) { s.link(section, c.toString(), c.toString()); } - pids.addAll(children); + testPids.addAll(children); } + } + for (Long p : orderedPids) { for (ActionSet set : actions) { - set.gatherProcessInfo(pidSection, p); + set.gatherProcessInfo(section, p); } } } diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionHelper.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionHelper.java index 8b2d2757ce7..035838babf5 100644 --- a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionHelper.java +++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -64,7 +64,7 @@ public class ActionHelper { public ActionHelper(Path workDir, String prefix, Properties properties, Path... jdks) throws InvalidValueException { this.workDir = workDir.toAbsolutePath(); - getChildren = new PatternAction("children", + getChildren = new PatternAction(null, Utils.prependPrefix(prefix, "getChildren"), properties); ValueHandler.apply(this, properties, prefix); String[] pathStrings = System.getenv("PATH").split(File.pathSeparator); diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/PatternAction.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/PatternAction.java index fbcaaa7f47d..62ae9d77efa 100644 --- a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/PatternAction.java +++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/PatternAction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,7 +44,7 @@ public class PatternAction implements Action { public PatternAction(String name, String id, Properties properties) throws InvalidValueException { - action = new SimpleAction(("pattern." + name), id, properties); + action = new SimpleAction(name != null ? ("pattern." + name) : "pattern", id, properties); ValueHandler.apply(this, properties, id); originalArgs = action.args.clone(); } From 8f5e561d1926283584cace6253ad2b204a434bf7 Mon Sep 17 00:00:00 2001 From: Coleen Phillimore Date: Tue, 5 Feb 2019 10:40:25 -0500 Subject: [PATCH 15/36] 8139551: Scalability problem with redefinition - multiple code cache walks Walk code cache and deoptimize once per redefinition. Reviewed-by: sspitsyn, dlong --- src/hotspot/share/aot/aotCodeHeap.cpp | 22 ++++ src/hotspot/share/aot/aotCodeHeap.hpp | 1 + src/hotspot/share/aot/aotCompiledMethod.cpp | 4 - src/hotspot/share/aot/aotCompiledMethod.hpp | 3 +- src/hotspot/share/aot/aotLoader.cpp | 8 ++ src/hotspot/share/aot/aotLoader.hpp | 1 + src/hotspot/share/code/codeCache.cpp | 52 ++++---- src/hotspot/share/code/codeCache.hpp | 5 +- src/hotspot/share/code/compiledMethod.hpp | 2 +- src/hotspot/share/code/nmethod.cpp | 38 +++--- src/hotspot/share/code/nmethod.hpp | 4 +- .../share/prims/jvmtiRedefineClasses.cpp | 55 +++++--- .../share/prims/jvmtiRedefineClasses.hpp | 3 +- .../RedefineTests/TestMultipleClasses.java | 120 ++++++++++++++++++ 14 files changed, 244 insertions(+), 74 deletions(-) create mode 100644 test/hotspot/jtreg/runtime/RedefineTests/TestMultipleClasses.java diff --git a/src/hotspot/share/aot/aotCodeHeap.cpp b/src/hotspot/share/aot/aotCodeHeap.cpp index 754ac2ab441..02ab377f367 100644 --- a/src/hotspot/share/aot/aotCodeHeap.cpp +++ b/src/hotspot/share/aot/aotCodeHeap.cpp @@ -690,6 +690,28 @@ bool AOTCodeHeap::is_dependent_method(Klass* dependee, AOTCompiledMethod* aot) { return false; } +void AOTCodeHeap::mark_evol_dependent_methods(InstanceKlass* dependee) { + AOTKlassData* klass_data = find_klass(dependee); + if (klass_data == NULL) { + return; // no AOT records for this class - no dependencies + } + if (!dependee->has_passed_fingerprint_check()) { + return; // different class + } + + int methods_offset = klass_data->_dependent_methods_offset; + if (methods_offset >= 0) { + address methods_cnt_adr = _dependencies + methods_offset; + int methods_cnt = *(int*)methods_cnt_adr; + int* indexes = (int*)(methods_cnt_adr + 4); + for (int i = 0; i < methods_cnt; ++i) { + int code_id = indexes[i]; + AOTCompiledMethod* aot = _code_to_aot[code_id]._aot; + aot->mark_for_deoptimization(false); + } + } +} + void AOTCodeHeap::sweep_dependent_methods(int* indexes, int methods_cnt) { int marked = 0; for (int i = 0; i < methods_cnt; ++i) { diff --git a/src/hotspot/share/aot/aotCodeHeap.hpp b/src/hotspot/share/aot/aotCodeHeap.hpp index be722a97bb2..c78c942ae17 100644 --- a/src/hotspot/share/aot/aotCodeHeap.hpp +++ b/src/hotspot/share/aot/aotCodeHeap.hpp @@ -244,6 +244,7 @@ public: Klass* get_klass_from_got(const char* klass_name, int klass_len, const Method* method); bool is_dependent_method(Klass* dependee, AOTCompiledMethod* aot); + void mark_evol_dependent_methods(InstanceKlass* dependee); const char* get_name_at(int offset) { return _metaspace_names + offset; diff --git a/src/hotspot/share/aot/aotCompiledMethod.cpp b/src/hotspot/share/aot/aotCompiledMethod.cpp index 484b09d37bc..91769c4f249 100644 --- a/src/hotspot/share/aot/aotCompiledMethod.cpp +++ b/src/hotspot/share/aot/aotCompiledMethod.cpp @@ -428,10 +428,6 @@ address AOTCompiledMethod::call_instruction_address(address pc) const { return pltcall->instruction_address(); } -bool AOTCompiledMethod::is_evol_dependent_on(Klass* dependee) { - return !is_aot_runtime_stub() && _heap->is_dependent_method(dependee, this); -} - void AOTCompiledMethod::clear_inline_caches() { assert(SafepointSynchronize::is_at_safepoint(), "cleaning of IC's only allowed at safepoint"); if (is_zombie()) { diff --git a/src/hotspot/share/aot/aotCompiledMethod.hpp b/src/hotspot/share/aot/aotCompiledMethod.hpp index 03483e1c52d..8f52917f9ac 100644 --- a/src/hotspot/share/aot/aotCompiledMethod.hpp +++ b/src/hotspot/share/aot/aotCompiledMethod.hpp @@ -206,7 +206,8 @@ private: // AOT compiled methods do not get into zombie state virtual bool can_convert_to_zombie() { return false; } - virtual bool is_evol_dependent_on(Klass* dependee); + // Evol dependent methods already marked. + virtual bool is_evol_dependent() { return false; } virtual bool is_dependent_on_method(Method* dependee) { return true; } virtual void clear_inline_caches(); diff --git a/src/hotspot/share/aot/aotLoader.cpp b/src/hotspot/share/aot/aotLoader.cpp index 03c447ff40c..c219e2084f2 100644 --- a/src/hotspot/share/aot/aotLoader.cpp +++ b/src/hotspot/share/aot/aotLoader.cpp @@ -86,6 +86,14 @@ void AOTLoader::metadata_do(void f(Metadata*)) { } } +void AOTLoader::mark_evol_dependent_methods(InstanceKlass* dependee) { + if (UseAOT) { + FOR_ALL_AOT_HEAPS(heap) { + (*heap)->mark_evol_dependent_methods(dependee); + } + } +} + /** * List of core modules for which we search for shared libraries. */ diff --git a/src/hotspot/share/aot/aotLoader.hpp b/src/hotspot/share/aot/aotLoader.hpp index f0c8de99c6f..ab76b919837 100644 --- a/src/hotspot/share/aot/aotLoader.hpp +++ b/src/hotspot/share/aot/aotLoader.hpp @@ -63,6 +63,7 @@ public: static uint64_t get_saved_fingerprint(InstanceKlass* ik) NOT_AOT({ return 0; }); static void oops_do(OopClosure* f) NOT_AOT_RETURN; static void metadata_do(void f(Metadata*)) NOT_AOT_RETURN; + static void mark_evol_dependent_methods(InstanceKlass* dependee) NOT_AOT_RETURN; NOT_PRODUCT( static void print_statistics() NOT_AOT_RETURN; ) diff --git a/src/hotspot/share/code/codeCache.cpp b/src/hotspot/share/code/codeCache.cpp index 09117a12f54..e4b79690935 100644 --- a/src/hotspot/share/code/codeCache.cpp +++ b/src/hotspot/share/code/codeCache.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1200,9 +1200,9 @@ bool CodeCache::is_far_target(address target) { #endif } -int CodeCache::mark_for_evol_deoptimization(InstanceKlass* dependee) { +// Just marks the methods in this class as needing deoptimization +void CodeCache::mark_for_evol_deoptimization(InstanceKlass* dependee) { MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); - int number_of_marked_CodeBlobs = 0; // Deoptimize all methods of the evolving class itself Array* old_methods = dependee->methods(); @@ -1212,16 +1212,24 @@ int CodeCache::mark_for_evol_deoptimization(InstanceKlass* dependee) { CompiledMethod* nm = old_method->code(); if (nm != NULL) { nm->mark_for_deoptimization(); - number_of_marked_CodeBlobs++; } } + // Mark dependent AOT nmethods, which are only found via the class redefined. + AOTLoader::mark_evol_dependent_methods(dependee); +} + +// Walk compiled methods and mark dependent methods for deoptimization. +int CodeCache::mark_dependents_for_evol_deoptimization() { + int number_of_marked_CodeBlobs = 0; CompiledMethodIterator iter(CompiledMethodIterator::only_alive_and_not_unloading); while(iter.next()) { CompiledMethod* nm = iter.method(); if (nm->is_marked_for_deoptimization()) { - // ...Already marked in the previous pass; don't count it again. - } else if (nm->is_evol_dependent_on(dependee)) { + // ...Already marked in the previous pass; count it here. + // Also counts AOT compiled methods, already marked. + number_of_marked_CodeBlobs++; + } else if (nm->is_evol_dependent()) { ResourceMark rm; nm->mark_for_deoptimization(); number_of_marked_CodeBlobs++; @@ -1231,6 +1239,8 @@ int CodeCache::mark_for_evol_deoptimization(InstanceKlass* dependee) { } } + // return total count of nmethods marked for deoptimization, if zero the caller + // can skip deoptimization return number_of_marked_CodeBlobs; } @@ -1294,34 +1304,30 @@ void CodeCache::flush_dependents_on(InstanceKlass* dependee) { } } -// Flushes compiled methods dependent on dependee when the dependee is redefined -// via RedefineClasses -void CodeCache::flush_evol_dependents_on(InstanceKlass* ev_k) { +// Flushes compiled methods dependent on redefined classes, that have already been +// marked for deoptimization. +void CodeCache::flush_evol_dependents() { // --- Compile_lock is not held. However we are at a safepoint. assert_locked_or_safepoint(Compile_lock); - if (number_of_nmethods_with_dependencies() == 0 && !UseAOT) return; // CodeCache can only be updated by a thread_in_VM and they will all be // stopped during the safepoint so CodeCache will be safe to update without // holding the CodeCache_lock. - // Compute the dependent nmethods - if (mark_for_evol_deoptimization(ev_k) > 0) { - // At least one nmethod has been marked for deoptimization + // At least one nmethod has been marked for deoptimization - // All this already happens inside a VM_Operation, so we'll do all the work here. - // Stuff copied from VM_Deoptimize and modified slightly. + // All this already happens inside a VM_Operation, so we'll do all the work here. + // Stuff copied from VM_Deoptimize and modified slightly. - // We do not want any GCs to happen while we are in the middle of this VM operation - ResourceMark rm; - DeoptimizationMarker dm; + // We do not want any GCs to happen while we are in the middle of this VM operation + ResourceMark rm; + DeoptimizationMarker dm; - // Deoptimize all activations depending on marked nmethods - Deoptimization::deoptimize_dependents(); + // Deoptimize all activations depending on marked nmethods + Deoptimization::deoptimize_dependents(); - // Make the dependent methods not entrant - make_marked_nmethods_not_entrant(); - } + // Make the dependent methods not entrant + make_marked_nmethods_not_entrant(); } // Flushes compiled methods dependent on dependee diff --git a/src/hotspot/share/code/codeCache.hpp b/src/hotspot/share/code/codeCache.hpp index 11223b359e3..16217f850e6 100644 --- a/src/hotspot/share/code/codeCache.hpp +++ b/src/hotspot/share/code/codeCache.hpp @@ -288,7 +288,6 @@ class CodeCache : AllStatic { // Deoptimization private: static int mark_for_deoptimization(KlassDepChange& changes); - static int mark_for_evol_deoptimization(InstanceKlass* dependee); public: static void mark_all_nmethods_for_deoptimization(); @@ -298,7 +297,9 @@ class CodeCache : AllStatic { // Flushing and deoptimization static void flush_dependents_on(InstanceKlass* dependee); // Flushing and deoptimization in case of evolution - static void flush_evol_dependents_on(InstanceKlass* dependee); + static void mark_for_evol_deoptimization(InstanceKlass* dependee); + static int mark_dependents_for_evol_deoptimization(); + static void flush_evol_dependents(); // Support for fullspeed debugging static void flush_dependents_on_method(const methodHandle& dependee); diff --git a/src/hotspot/share/code/compiledMethod.hpp b/src/hotspot/share/code/compiledMethod.hpp index 3c5f4eaa2da..dc6dced20ff 100644 --- a/src/hotspot/share/code/compiledMethod.hpp +++ b/src/hotspot/share/code/compiledMethod.hpp @@ -367,7 +367,7 @@ public: int verify_icholder_relocations(); void verify_oop_relocations(); - virtual bool is_evol_dependent_on(Klass* dependee) = 0; + virtual bool is_evol_dependent() = 0; // Fast breakpoint support. Tells if this compiled method is // dependent on the given method. Returns true if this nmethod // corresponds to the given method as well. diff --git a/src/hotspot/share/code/nmethod.cpp b/src/hotspot/share/code/nmethod.cpp index 340be95ba7d..f1547cd1d38 100644 --- a/src/hotspot/share/code/nmethod.cpp +++ b/src/hotspot/share/code/nmethod.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -2021,30 +2021,26 @@ bool nmethod::check_dependency_on(DepChange& changes) { return found_check; } -bool nmethod::is_evol_dependent_on(Klass* dependee) { - InstanceKlass *dependee_ik = InstanceKlass::cast(dependee); - Array* dependee_methods = dependee_ik->methods(); +bool nmethod::is_evol_dependent() { for (Dependencies::DepStream deps(this); deps.next(); ) { if (deps.type() == Dependencies::evol_method) { Method* method = deps.method_argument(0); - for (int j = 0; j < dependee_methods->length(); j++) { - if (dependee_methods->at(j) == method) { - if (log_is_enabled(Debug, redefine, class, nmethod)) { - ResourceMark rm; - log_debug(redefine, class, nmethod) - ("Found evol dependency of nmethod %s.%s(%s) compile_id=%d on method %s.%s(%s)", - _method->method_holder()->external_name(), - _method->name()->as_C_string(), - _method->signature()->as_C_string(), - compile_id(), - method->method_holder()->external_name(), - method->name()->as_C_string(), - method->signature()->as_C_string()); - } - if (TraceDependencies || LogCompilation) - deps.log_dependency(dependee); - return true; + if (method->is_old()) { + if (log_is_enabled(Debug, redefine, class, nmethod)) { + ResourceMark rm; + log_debug(redefine, class, nmethod) + ("Found evol dependency of nmethod %s.%s(%s) compile_id=%d on method %s.%s(%s)", + _method->method_holder()->external_name(), + _method->name()->as_C_string(), + _method->signature()->as_C_string(), + compile_id(), + method->method_holder()->external_name(), + method->name()->as_C_string(), + method->signature()->as_C_string()); } + if (TraceDependencies || LogCompilation) + deps.log_dependency(method->method_holder()); + return true; } } } diff --git a/src/hotspot/share/code/nmethod.hpp b/src/hotspot/share/code/nmethod.hpp index 450a6266d7a..9f6b1105d75 100644 --- a/src/hotspot/share/code/nmethod.hpp +++ b/src/hotspot/share/code/nmethod.hpp @@ -588,9 +588,9 @@ public: bool check_dependency_on(DepChange& changes); // Evolution support. Tells if this compiled method is dependent on any of - // methods m() of class dependee, such that if m() in dependee is replaced, + // redefined methods, such that if m() is replaced, // this compiled method will have to be deoptimized. - bool is_evol_dependent_on(Klass* dependee); + bool is_evol_dependent(); // Fast breakpoint support. Tells if this compiled method is // dependent on the given method. Returns true if this nmethod diff --git a/src/hotspot/share/prims/jvmtiRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiRedefineClasses.cpp index ccd71e6140a..79beb1b3426 100644 --- a/src/hotspot/share/prims/jvmtiRedefineClasses.cpp +++ b/src/hotspot/share/prims/jvmtiRedefineClasses.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -123,6 +123,7 @@ bool VM_RedefineClasses::doit_prologue() { _res = JVMTI_ERROR_NULL_POINTER; return false; } + for (int i = 0; i < _class_count; i++) { if (_class_defs[i].klass == NULL) { _res = JVMTI_ERROR_INVALID_CLASS; @@ -209,6 +210,9 @@ void VM_RedefineClasses::doit() { redefine_single_class(_class_defs[i].klass, _scratch_classes[i], thread); } + // Flush all compiled code that depends on the classes redefined. + flush_dependent_code(); + // Clean out MethodData pointing to old Method* // Have to do this after all classes are redefined and all methods that // are redefined are marked as old. @@ -3836,30 +3840,43 @@ void VM_RedefineClasses::transfer_old_native_function_registrations(InstanceKlas // subsequent calls to RedefineClasses need only throw away code // that depends on the class. // -void VM_RedefineClasses::flush_dependent_code(InstanceKlass* ik, TRAPS) { + +// First step is to walk the code cache for each class redefined and mark +// dependent methods. Wait until all classes are processed to deoptimize everything. +void VM_RedefineClasses::mark_dependent_code(InstanceKlass* ik) { assert_locked_or_safepoint(Compile_lock); // All dependencies have been recorded from startup or this is a second or // subsequent use of RedefineClasses if (JvmtiExport::all_dependencies_are_recorded()) { - CodeCache::flush_evol_dependents_on(ik); - } else { - CodeCache::mark_all_nmethods_for_deoptimization(); - - ResourceMark rm(THREAD); - DeoptimizationMarker dm; - - // Deoptimize all activations depending on marked nmethods - Deoptimization::deoptimize_dependents(); - - // Make the dependent methods not entrant - CodeCache::make_marked_nmethods_not_entrant(); - - // From now on we know that the dependency information is complete - JvmtiExport::set_all_dependencies_are_recorded(true); + CodeCache::mark_for_evol_deoptimization(ik); } } +void VM_RedefineClasses::flush_dependent_code() { + assert(SafepointSynchronize::is_at_safepoint(), "sanity check"); + + bool deopt_needed; + + // This is the first redefinition, mark all the nmethods for deoptimization + if (!JvmtiExport::all_dependencies_are_recorded()) { + log_debug(redefine, class, nmethod)("Marked all nmethods for deopt"); + CodeCache::mark_all_nmethods_for_deoptimization(); + deopt_needed = true; + } else { + int deopt = CodeCache::mark_dependents_for_evol_deoptimization(); + log_debug(redefine, class, nmethod)("Marked %d dependent nmethods for deopt", deopt); + deopt_needed = (deopt != 0); + } + + if (deopt_needed) { + CodeCache::flush_evol_dependents(); + } + + // From now on we know that the dependency information is complete + JvmtiExport::set_all_dependencies_are_recorded(true); +} + void VM_RedefineClasses::compute_added_deleted_matching_methods() { Method* old_method; Method* new_method; @@ -3958,8 +3975,8 @@ void VM_RedefineClasses::redefine_single_class(jclass the_jclass, JvmtiBreakpoints& jvmti_breakpoints = JvmtiCurrentBreakpoints::get_jvmti_breakpoints(); jvmti_breakpoints.clearall_in_class_at_safepoint(the_class); - // Deoptimize all compiled code that depends on this class - flush_dependent_code(the_class, THREAD); + // Mark all compiled code that depends on this class + mark_dependent_code(the_class); _old_methods = the_class->methods(); _new_methods = scratch_class->methods(); diff --git a/src/hotspot/share/prims/jvmtiRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiRedefineClasses.hpp index 8dae0b98a7f..ed6d3c3ca7b 100644 --- a/src/hotspot/share/prims/jvmtiRedefineClasses.hpp +++ b/src/hotspot/share/prims/jvmtiRedefineClasses.hpp @@ -493,7 +493,8 @@ class VM_RedefineClasses: public VM_Operation { InstanceKlass* scratch_class, constantPoolHandle scratch_cp, int scratch_cp_length, TRAPS); - void flush_dependent_code(InstanceKlass* ik, TRAPS); + void flush_dependent_code(); + void mark_dependent_code(InstanceKlass* ik); // lock classes to redefine since constant pool merging isn't thread safe. void lock_classes(); diff --git a/test/hotspot/jtreg/runtime/RedefineTests/TestMultipleClasses.java b/test/hotspot/jtreg/runtime/RedefineTests/TestMultipleClasses.java new file mode 100644 index 00000000000..e5a2bd9c288 --- /dev/null +++ b/test/hotspot/jtreg/runtime/RedefineTests/TestMultipleClasses.java @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8139551 + * @summary Scalability problem with redefinition - multiple code cache walks + * @library /test/lib + * @modules java.base/jdk.internal.misc + * @modules java.compiler + * java.instrument + * jdk.jartool/sun.tools.jar + * @run main RedefineClassHelper + * @run main/othervm/timeout=180 -javaagent:redefineagent.jar -XX:CompileThreshold=100 -Xlog:redefine+class+nmethod=debug TestMultipleClasses + */ + +import java.lang.instrument.*; +import java.lang.reflect.*; +import jdk.test.lib.compiler.InMemoryJavaCompiler; + +public class TestMultipleClasses extends ClassLoader { + + public static String B(int count) { + return new String("public class B" + count + " {" + + " public static void compiledMethod() { " + + " try{" + + " Thread.sleep(1); " + + " } catch(InterruptedException ie) {" + + " }" + + " }" + + "}"); + } + + static String newB(int count) { + return new String("public class B" + count + " {" + + " public static void compiledMethod() { " + + " System.out.println(\"compiledMethod called " + count + "\");" + + " }" + + "}"); + } + + static int index = 0; + + @Override + protected Class findClass(String name) throws ClassNotFoundException { + if (name.equals("B" + index)) { + byte[] b = InMemoryJavaCompiler.compile(name, B(index)); + return defineClass(name, b, 0, b.length); + } else { + return super.findClass(name); + } + } + + static void runCompiledMethodMethods(Class c, int count) throws Exception { + // Run for a while so they compile. + Object o = c.newInstance(); + Method m = c.getMethod("compiledMethod"); + for (int i = 0; i < count; i++) { + m.invoke(o); + } + } + + public static void main(String[] args) throws Exception { + + final int numberOfClasses = 20; + Class[] classes = new Class[numberOfClasses]; + byte[][] newClass = new byte[numberOfClasses][]; + ClassDefinition[] defs = new ClassDefinition[numberOfClasses]; + + TestMultipleClasses loader = new TestMultipleClasses(); + + // Load and start all the classes. + for (index = 0; index < numberOfClasses; index++) { + String name = new String("B" + index); + Class c = loader.findClass(name); + + runCompiledMethodMethods(c, 500); + // Make class definition for redefinition + classes[index] = c; + newClass[index] = InMemoryJavaCompiler.compile(c.getName(), newB(index)); + defs[index] = new ClassDefinition(c, newClass[index]); + } + + long startTime = System.currentTimeMillis(); + + // Redefine all classes. + RedefineClassHelper.instrumentation.redefineClasses(defs); + + long endTime = System.currentTimeMillis(); + + System.out.println("Redefinition took " + (endTime - startTime) + " milliseconds"); + + System.gc(); + + // Run all new classes. + for (index = 0; index < numberOfClasses; index++) { + runCompiledMethodMethods(classes[index], 1); + } + } +} From 958a739be92791699945fca3b0d68cc73ebcc1b1 Mon Sep 17 00:00:00 2001 From: Erik Joelsson Date: Tue, 5 Feb 2019 09:53:33 -0800 Subject: [PATCH 16/36] 8218177: Bump jib format_version to support new devkit archive layout Reviewed-by: ihse, tbell --- make/conf/jib-profiles.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/make/conf/jib-profiles.js b/make/conf/jib-profiles.js index 7dd481cffe4..4f9e572c64f 100644 --- a/make/conf/jib-profiles.js +++ b/make/conf/jib-profiles.js @@ -76,6 +76,7 @@ * install_path * download_path * download_dir + * home_path * * * The output data generated by this configuration file has the following @@ -185,7 +186,9 @@ var getJibProfiles = function (input) { // Identifies the version of this format to the tool reading it. // 1.1 signifies that the publish, publish-src and get-src features are usable. // 1.2 signifies that artifact uploads should fail on missing artifacts by default. - data.format_version = "1.2"; + // 1.3 input.get(, "home_path") automatically goes down into a single top + // dir just like default configure_args and environment_path variables. + data.format_version = "1.3"; // Organization, product and version are used when uploading/publishing build results data.organization = ""; @@ -363,7 +366,7 @@ var getJibProfilesCommon = function (input, data) { }; common.boot_jdk_version = "11"; - common.boot_jdk_home = input.get("boot_jdk", "home_path") + "/jdk-" + common.boot_jdk_home = input.get("boot_jdk", "install_path") + "/jdk-" + common.boot_jdk_version + (input.build_os == "macosx" ? ".jdk/Contents/Home" : ""); @@ -486,7 +489,7 @@ var getJibProfilesProfiles = function (input, common, data) { var testmakeBase = { dependencies: [ "ant" ], environment: { - "ANT_HOME": input.get("ant", "install_path") + "/apache-ant-1.7.1" + "ANT_HOME": input.get("ant", "home_path") } }; [ "linux-x64", "macosx-x64", "solaris-sparcv9", "solaris-x64", "windows-x64"] @@ -861,7 +864,7 @@ var getJibProfilesProfiles = function (input, common, data) { var getJibProfilesDependencies = function (input, common) { var devkit_platform_revisions = { - linux_x64: "gcc7.3.0-OEL6.4+1.1", + linux_x64: "gcc7.3.0-OEL6.4+1.2", macosx_x64: "Xcode9.4-MacOSX10.13+1.0", solaris_x64: "SS12u4-Solaris11u1+1.0", solaris_sparcv9: "SS12u6-Solaris11u3+1.0", @@ -1003,8 +1006,7 @@ var getJibProfilesDependencies = function (input, common) { classifier: "distribution", revision: "3.0-SNAPSHOT", environment_name: "JIB_HOME", - environment_value: input.get("jib", "install_path") - + "/jib-3.0-SNAPSHOT-distribution" + environment_value: input.get("jib", "home_path") }, ant: { From 4aeeb2f045e61d0ea75a72f3fbe93a6753255d03 Mon Sep 17 00:00:00 2001 From: Erik Joelsson Date: Tue, 5 Feb 2019 09:56:19 -0800 Subject: [PATCH 17/36] 8160926: FLAGS_COMPILER_CHECK_ARGUMENTS doesn't handle cross-compilation Reviewed-by: ihse --- make/autoconf/buildjdk-spec.gmk.in | 2 + make/autoconf/flags-cflags.m4 | 76 +++++++++++++++--------------- make/autoconf/flags.m4 | 32 ++++++++----- make/autoconf/toolchain.m4 | 2 +- 4 files changed, 63 insertions(+), 49 deletions(-) diff --git a/make/autoconf/buildjdk-spec.gmk.in b/make/autoconf/buildjdk-spec.gmk.in index b01d00b7c35..670989dec8f 100644 --- a/make/autoconf/buildjdk-spec.gmk.in +++ b/make/autoconf/buildjdk-spec.gmk.in @@ -75,6 +75,8 @@ JVM_LDFLAGS := @OPENJDK_BUILD_JVM_LDFLAGS@ JVM_ASFLAGS := @OPENJDK_BUILD_JVM_ASFLAGS@ JVM_LIBS := @OPENJDK_BUILD_JVM_LIBS@ +FDLIBM_CFLAGS := @OPENJDK_BUILD_FDLIBM_CFLAGS@ + # The compiler for the build platform is likely not warning compatible with the official # compiler. WARNINGS_AS_ERRORS := false diff --git a/make/autoconf/flags-cflags.m4 b/make/autoconf/flags-cflags.m4 index 14b4f1ae7d7..40021632ed2 100644 --- a/make/autoconf/flags-cflags.m4 +++ b/make/autoconf/flags-cflags.m4 @@ -415,21 +415,7 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS], FLAGS_CPU_LEGACY=$OPENJDK_BUILD_CPU_LEGACY FLAGS_CPU_LEGACY_LIB=$OPENJDK_BUILD_CPU_LEGACY_LIB - FLAGS_SETUP_CFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_]) - - COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off" - # Check that the compiler supports -ffp-contract=off flag - # Set FDLIBM_CFLAGS to -ffp-contract=off if it does. Empty - # otherwise. - # These flags are required for GCC-based builds of - # fdlibm with optimization without losing precision. - # Notably, -ffp-contract=off needs to be added for GCC >= 4.6. - if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then - FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_FP_CONTRACT_OFF_FLAG}], - IF_TRUE: [FDLIBM_CFLAGS=${COMPILER_FP_CONTRACT_OFF_FLAG}], - IF_FALSE: [FDLIBM_CFLAGS=""]) - fi - AC_SUBST(FDLIBM_CFLAGS) + FLAGS_SETUP_CFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_], [BUILD_]) ]) ################################################################################ @@ -529,15 +515,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER], if test "x$TOOLCHAIN_TYPE" = xgcc; then TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM -fcheck-new -fstack-protector" TOOLCHAIN_CFLAGS_JDK="-pipe -fstack-protector" - TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing" # technically NOT for CXX (but since this gives *worse* performance, use no-strict-aliasing everywhere!) - - CXXSTD_CXXFLAG="-std=gnu++98" - FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$CXXSTD_CXXFLAG -Werror], - IF_FALSE: [CXXSTD_CXXFLAG=""]) - TOOLCHAIN_CFLAGS_JDK_CXXONLY="$CXXSTD_CXXFLAG" - TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM $CXXSTD_CXXFLAG" - ADLC_CXXFLAG="$CXXSTD_CXXFLAG" - + # technically NOT for CXX (but since this gives *worse* performance, use + # no-strict-aliasing everywhere!) + TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing" elif test "x$TOOLCHAIN_TYPE" = xclang; then # Restrict the debug information created by Clang to avoid @@ -670,15 +650,13 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER], OS_CFLAGS_JVM="$OS_CFLAGS_JVM -DNEEDS_LIBRT" fi fi - - # EXPORT - AC_SUBST(ADLC_CXXFLAG) ]) ################################################################################ # $1 - Either BUILD or TARGET to pick the correct OS/CPU variables to check # conditionals against. # $2 - Optional prefix for each variable defined. +# $3 - Optional prefix for compiler variables (either BUILD_ or nothing). AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP], [ #### CPU DEFINES, these should (in theory) be independent on toolchain @@ -768,6 +746,13 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP], $1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer" fi + $1_CXXSTD_CXXFLAG="-std=gnu++98" + FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${$1_CXXSTD_CXXFLAG} -Werror], + PREFIX: $3, IF_FALSE: [$1_CXXSTD_CXXFLAG=""]) + $1_TOOLCHAIN_CFLAGS_JDK_CXXONLY="${$1_CXXSTD_CXXFLAG}" + $1_TOOLCHAIN_CFLAGS_JVM="${$1_TOOLCHAIN_CFLAGS_JVM} ${$1_CXXSTD_CXXFLAG}" + $2ADLC_CXXFLAG="${$1_CXXSTD_CXXFLAG}" + elif test "x$TOOLCHAIN_TYPE" = xclang; then if test "x$FLAGS_OS" = xlinux; then # ppc test not really needed for clang @@ -804,14 +789,15 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP], fi if test "x$TOOLCHAIN_TYPE" = xgcc; then - TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($1)) + FLAGS_SETUP_GCC6_COMPILER_FLAGS($1, $3) $1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}" $1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized" fi # EXPORT to API - CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM $TOOLCHAIN_CFLAGS_JVM \ + CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM \ + $TOOLCHAIN_CFLAGS_JVM ${$1_TOOLCHAIN_CFLAGS_JVM} \ $OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \ $WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG" @@ -825,7 +811,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP], CFLAGS_JDK_COMMON_CONLY="$TOOLCHAIN_CFLAGS_JDK_CONLY \ $WARNING_CFLAGS_JDK_CONLY ${$2EXTRA_CFLAGS}" - CFLAGS_JDK_COMMON_CXXONLY="$ALWAYS_DEFINES_JDK_CXXONLY $TOOLCHAIN_CFLAGS_JDK_CXXONLY \ + CFLAGS_JDK_COMMON_CXXONLY="$ALWAYS_DEFINES_JDK_CXXONLY \ + $TOOLCHAIN_CFLAGS_JDK_CXXONLY \ + ${$1_TOOLCHAIN_CFLAGS_JDK_CXXONLY} \ $WARNING_CFLAGS_JDK_CXXONLY ${$2EXTRA_CXXFLAGS}" $1_CFLAGS_JVM="${$1_DEFINES_CPU_JVM} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JVM} ${$1_TOOLCHAIN_CFLAGS} ${$1_WARNING_CFLAGS_JVM}" @@ -843,11 +831,28 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP], AC_SUBST($2CFLAGS_JDKEXE) AC_SUBST($2CXXFLAGS_JDKLIB) AC_SUBST($2CXXFLAGS_JDKEXE) + AC_SUBST($2ADLC_CXXFLAG) + + COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off" + # Check that the compiler supports -ffp-contract=off flag + # Set FDLIBM_CFLAGS to -ffp-contract=off if it does. Empty + # otherwise. + # These flags are required for GCC-based builds of + # fdlibm with optimization without losing precision. + # Notably, -ffp-contract=off needs to be added for GCC >= 4.6. + if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then + FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_FP_CONTRACT_OFF_FLAG}], + PREFIX: $3, + IF_TRUE: [$2FDLIBM_CFLAGS=${COMPILER_FP_CONTRACT_OFF_FLAG}], + IF_FALSE: [$2FDLIBM_CFLAGS=""]) + fi + AC_SUBST($2FDLIBM_CFLAGS) ]) # FLAGS_SETUP_GCC6_COMPILER_FLAGS([PREFIX]) # Arguments: # $1 - Prefix for each variable defined. +# $2 - Prefix for compiler variables (either BUILD_ or nothing). AC_DEFUN([FLAGS_SETUP_GCC6_COMPILER_FLAGS], [ # These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code @@ -855,14 +860,11 @@ AC_DEFUN([FLAGS_SETUP_GCC6_COMPILER_FLAGS], # Notably, value range propagation now assumes that the this pointer of C++ # member functions is non-null. NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks" - dnl Argument check is disabled until FLAGS_COMPILER_CHECK_ARGUMENTS handles cross-compilation - dnl FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror], - dnl IF_FALSE: [NO_DELETE_NULL_POINTER_CHECKS_CFLAG=""]) + FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror], + PREFIX: $2, IF_FALSE: [NO_DELETE_NULL_POINTER_CHECKS_CFLAG=""]) NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse" - dnl Argument check is disabled until FLAGS_COMPILER_CHECK_ARGUMENTS handles cross-compilation - dnl FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_LIFETIME_DSE_CFLAG -Werror], - dnl IF_FALSE: [NO_LIFETIME_DSE_CFLAG=""]) - AC_MSG_NOTICE([GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} and ${NO_LIFETIME_DSE_CFLAG}]) + FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_LIFETIME_DSE_CFLAG -Werror], + PREFIX: $2, IF_FALSE: [NO_LIFETIME_DSE_CFLAG=""]) $1_GCC6_CFLAGS="${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}" ]) diff --git a/make/autoconf/flags.m4 b/make/autoconf/flags.m4 index ecb4e6f9256..6c1bcc95750 100644 --- a/make/autoconf/flags.m4 +++ b/make/autoconf/flags.m4 @@ -421,17 +421,20 @@ AC_DEFUN([FLAGS_SETUP_FLAGS], # ------------------------------------------------------------ # Check that the C compiler supports an argument BASIC_DEFUN_NAMED([FLAGS_C_COMPILER_CHECK_ARGUMENTS], - [*ARGUMENT IF_TRUE IF_FALSE], [$@], + [*ARGUMENT IF_TRUE IF_FALSE PREFIX], [$@], [ - AC_MSG_CHECKING([if the C compiler supports "ARG_ARGUMENT"]) + AC_MSG_CHECKING([if ARG_PREFIX[CC] supports "ARG_ARGUMENT"]) supports=yes saved_cflags="$CFLAGS" + saved_cc="$CC" CFLAGS="$CFLAGS ARG_ARGUMENT" + CC="$ARG_PREFIX[CC]" AC_LANG_PUSH([C]) AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [], [supports=no]) AC_LANG_POP([C]) + CC="$saved_cc" CFLAGS="$saved_cflags" AC_MSG_RESULT([$supports]) @@ -449,17 +452,20 @@ BASIC_DEFUN_NAMED([FLAGS_C_COMPILER_CHECK_ARGUMENTS], # ------------------------------------------------------------ # Check that the C++ compiler supports an argument BASIC_DEFUN_NAMED([FLAGS_CXX_COMPILER_CHECK_ARGUMENTS], - [*ARGUMENT IF_TRUE IF_FALSE], [$@], + [*ARGUMENT IF_TRUE IF_FALSE PREFIX], [$@], [ - AC_MSG_CHECKING([if the C++ compiler supports "ARG_ARGUMENT"]) + AC_MSG_CHECKING([if ARG_PREFIX[CXX] supports "ARG_ARGUMENT"]) supports=yes saved_cxxflags="$CXXFLAGS" + saved_cxx="$CXX" CXXFLAGS="$CXXFLAG ARG_ARGUMENT" + CXX="$ARG_PREFIX[CXX]" AC_LANG_PUSH([C++]) AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [], [supports=no]) AC_LANG_POP([C++]) + CXX="$saved_cxx" CXXFLAGS="$saved_cxxflags" AC_MSG_RESULT([$supports]) @@ -477,18 +483,22 @@ BASIC_DEFUN_NAMED([FLAGS_CXX_COMPILER_CHECK_ARGUMENTS], # ------------------------------------------------------------ # Check that the C and C++ compilers support an argument BASIC_DEFUN_NAMED([FLAGS_COMPILER_CHECK_ARGUMENTS], - [*ARGUMENT IF_TRUE IF_FALSE], [$@], + [*ARGUMENT IF_TRUE IF_FALSE PREFIX], [$@], [ FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARG_ARGUMENT], - IF_TRUE: [C_COMP_SUPPORTS="yes"], - IF_FALSE: [C_COMP_SUPPORTS="no"]) + IF_TRUE: [C_COMP_SUPPORTS="yes"], + IF_FALSE: [C_COMP_SUPPORTS="no"], + PREFIX: [ARG_PREFIX]) FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARG_ARGUMENT], - IF_TRUE: [CXX_COMP_SUPPORTS="yes"], - IF_FALSE: [CXX_COMP_SUPPORTS="no"]) + IF_TRUE: [CXX_COMP_SUPPORTS="yes"], + IF_FALSE: [CXX_COMP_SUPPORTS="no"], + PREFIX: [ARG_PREFIX]) - AC_MSG_CHECKING([if both compilers support "ARG_ARGUMENT"]) + AC_MSG_CHECKING([if both ARG_PREFIX[CC] and ARG_PREFIX[CXX] support "ARG_ARGUMENT"]) supports=no - if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi + if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then + supports=yes; + fi AC_MSG_RESULT([$supports]) if test "x$supports" = "xyes" ; then diff --git a/make/autoconf/toolchain.m4 b/make/autoconf/toolchain.m4 index a967dd6110c..fa21f5813a0 100644 --- a/make/autoconf/toolchain.m4 +++ b/make/autoconf/toolchain.m4 @@ -595,7 +595,7 @@ AC_DEFUN([TOOLCHAIN_FIND_COMPILER], AC_DEFUN([TOOLCHAIN_EXTRACT_LD_VERSION], [ LINKER=[$]$1 - LINKER_NAME=$2 + LINKER_NAME="$2" if test "x$TOOLCHAIN_TYPE" = xsolstudio; then # cc -Wl,-V output typically looks like From b63c4ce810601449297be1e070ac7125baaaf292 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 5 Feb 2019 09:57:35 -0800 Subject: [PATCH 18/36] 8206132: DOM parser does not honor DocumentBuilderFactory.setExpandEntityReferences(false) Reviewed-by: rriggs, lancea --- .../impl/XMLDocumentFragmentScannerImpl.java | 35 ++- .../internal/parsers/AbstractDOMParser.java | 28 ++- .../xml/jaxp/unittest/dom/DOMFeatureTest.java | 188 +++++++++++++++++ .../jaxp/unittest/dom/ElementTraversal.java | 3 +- .../unittest/dom/ls/LSSerializerTest.java | 199 ++++++++++-------- 5 files changed, 344 insertions(+), 109 deletions(-) create mode 100644 test/jaxp/javax/xml/jaxp/unittest/dom/DOMFeatureTest.java diff --git a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java index 3e2a554d49b..d074b0366db 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java +++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved. */ /* @@ -73,7 +73,7 @@ import jdk.xml.internal.SecuritySupport; * @author Eric Ye, IBM * @author Sunitha Reddy, SUN Microsystems * - * @LastModified: Sep 2017 + * @LastModified: Jan 2019 */ public class XMLDocumentFragmentScannerImpl extends XMLScanner @@ -163,6 +163,10 @@ public class XMLDocumentFragmentScannerImpl protected static final String STANDARD_URI_CONFORMANT = Constants.XERCES_FEATURE_PREFIX +Constants.STANDARD_URI_CONFORMANT_FEATURE; + /** Feature id: create entity ref nodes. */ + protected static final String CREATE_ENTITY_REF_NODES = + Constants.XERCES_FEATURE_PREFIX + Constants.CREATE_ENTITY_REF_NODES_FEATURE; + /** Property identifier: Security property manager. */ private static final String XML_SECURITY_PROPERTY_MANAGER = Constants.XML_SECURITY_PROPERTY_MANAGER; @@ -322,6 +326,9 @@ public class XMLDocumentFragmentScannerImpl /** Xerces Feature: Disallow doctype declaration. */ protected boolean fDisallowDoctype = false; + /** Create entity reference nodes. */ + protected boolean fCreateEntityRefNodes = false; + /** * CDATA chunk size limit */ @@ -596,6 +603,8 @@ public class XMLDocumentFragmentScannerImpl fSecurityManager = (XMLSecurityManager)componentManager.getProperty(Constants.SECURITY_MANAGER, null); fNotifyBuiltInRefs = componentManager.getFeature(NOTIFY_BUILTIN_REFS, false); + fCreateEntityRefNodes = componentManager.getFeature(CREATE_ENTITY_REF_NODES, fCreateEntityRefNodes); + Object resolver = componentManager.getProperty(ENTITY_RESOLVER, null); fExternalSubsetResolver = (resolver instanceof ExternalSubsetResolver) ? (ExternalSubsetResolver) resolver : null; @@ -1837,14 +1846,20 @@ public class XMLDocumentFragmentScannerImpl } else reportFatalError("EntityNotDeclared", new Object[]{name}); } - //we are starting the entity even if the entity was not declared - //if that was the case it its taken care in XMLEntityManager.startEntity() - //we immediately call the endEntity. Application gets to know if there was - //any entity that was not declared. - fEntityManager.startEntity(true, name, false); - //set the scaner state to content.. parser will automatically revive itself at any point of time. - //setScannerState(SCANNER_STATE_CONTENT); - //return true ; + + // create EntityReference only + if (fCreateEntityRefNodes) { + fDocumentHandler.startGeneralEntity(name, null, null, null); + } else { + //we are starting the entity even if the entity was not declared + //if that was the case it its taken care in XMLEntityManager.startEntity() + //we immediately call the endEntity. Application gets to know if there was + //any entity that was not declared. + fEntityManager.startEntity(true, name, false); + //set the scaner state to content.. parser will automatically revive itself at any point of time. + //setScannerState(SCANNER_STATE_CONTENT); + //return true ; + } } // scanEntityReference() // utility methods diff --git a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/AbstractDOMParser.java b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/AbstractDOMParser.java index 0d494699d3e..6f41015cec3 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/AbstractDOMParser.java +++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/AbstractDOMParser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019 Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -84,7 +84,7 @@ import org.xml.sax.SAXException; * @author Andy Clark, IBM * @author Elena Litani, IBM * - * @LastModified: Nov 2017 + * @LastModified: Jan 2019 */ public class AbstractDOMParser extends AbstractXMLDocumentParser { @@ -491,8 +491,10 @@ public class AbstractDOMParser extends AbstractXMLDocumentParser { if (DEBUG_EVENTS) { System.out.println ("==>startGeneralEntity ("+name+")"); if (DEBUG_BASEURI) { - System.out.println (" expandedSystemId( **baseURI): "+identifier.getExpandedSystemId ()); - System.out.println (" baseURI:"+ identifier.getBaseSystemId ()); + System.out.println (" expandedSystemId( **baseURI): " + + identifier == null ? null : identifier.getExpandedSystemId()); + System.out.println (" baseURI:" + + identifier == null ? null : identifier.getBaseSystemId()); } } @@ -512,7 +514,7 @@ public class AbstractDOMParser extends AbstractXMLDocumentParser { EntityReferenceImpl erImpl =(EntityReferenceImpl)er; // set base uri - erImpl.setBaseURI (identifier.getExpandedSystemId ()); + erImpl.setBaseURI (identifier == null ? null : identifier.getExpandedSystemId()); if (fDocumentType != null) { // set actual encoding NamedNodeMap entities = fDocumentType.getEntities (); @@ -528,12 +530,17 @@ public class AbstractDOMParser extends AbstractXMLDocumentParser { } fInEntityRef = true; fCurrentNode.appendChild (er); - fCurrentNode = er; + + if (!fCreateEntityRefNodes) { + fCurrentNode = er; + } else { + ((NodeImpl)er).setReadOnly (true, true); + } } else { - int er = - fDeferredDocumentImpl.createDeferredEntityReference (name, identifier.getExpandedSystemId ()); + int er = fDeferredDocumentImpl.createDeferredEntityReference (name, + identifier == null ? null : identifier.getExpandedSystemId ()); if (fDocumentTypeIndex != -1) { // find corresponding Entity decl int node = fDeferredDocumentImpl.getLastChild (fDocumentTypeIndex, false); @@ -552,7 +559,10 @@ public class AbstractDOMParser extends AbstractXMLDocumentParser { } } fDeferredDocumentImpl.appendChild (fCurrentNodeIndex, er); - fCurrentNodeIndex = er; + + if (!fCreateEntityRefNodes) { + fCurrentNodeIndex = er; + } } } // startGeneralEntity(String,XMLResourceIdentifier, Augmentations) diff --git a/test/jaxp/javax/xml/jaxp/unittest/dom/DOMFeatureTest.java b/test/jaxp/javax/xml/jaxp/unittest/dom/DOMFeatureTest.java new file mode 100644 index 00000000000..471773077d1 --- /dev/null +++ b/test/jaxp/javax/xml/jaxp/unittest/dom/DOMFeatureTest.java @@ -0,0 +1,188 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package dom; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.testng.Assert; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Listeners; +import org.testng.annotations.Test; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.EntityReference; +import org.w3c.dom.NodeList; +import org.w3c.dom.Text; +import org.xml.sax.SAXException; + +/* + * @test + * @bug 8206132 + * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest + * @run testng dom.DOMFeatureTest + * @summary Tests DOM features. + */ +@Listeners({jaxp.library.BasePolicy.class}) +public class DOMFeatureTest { + + private static final String XML1 = "\n" + + "\n" + + " \n" + + " \n" + + "]>\n" + + "\n" + + " &author;\n" + + ""; + + private static final String XML2 = "\n" + + "\n" + + " \n" + + " \n" + + " \n" + + "]>\n" + + "\n" + + " &author; Hamlet<chapter>Chapter 1</chapter>\n" + + ""; + + private static final String XML3 = "\n" + + "" + + " \n" + + " \n" + + " \n" + + "]>\n" + + "\n" + + " &author; Hamlet<chapter>Chapter 1</chapter>\n" + + ""; + + /* + * DataProvider: for testing the EntityExpansion feature + * Data columns: case number, feature setting (true/false), xml file, + * number of nodes expected, text content expected, element if any + */ + @DataProvider(name = "EntityExpansion") + Object[][] getData() throws Exception { + return new Object[][]{ + {1, true, XML1, 1, "William Shakespeare", null}, + {2, true, XML2, 2, "William Shakespeare Hamlet", "chapter"}, + {3, false, XML1, 1, null, null}, + {4, false, XML2, 3, " Hamlet", "chapter"}, + {4, false, XML3, 3, " Hamlet", "chapter"}, + }; + } + + /* + * DataProvider: for testing the EntityExpansion feature + * Data columns: feature setting (true/false), xml file + */ + @DataProvider(name = "EntityExpansion1") + Object[][] getData1() throws Exception { + return new Object[][]{ + {true, XML3}, + }; + } + /** + * Verifies the EntityExpansion feature. + * @param caseNo the case number + * @param feature flag indicating the setting of the feature + * @param xml the XML string + * @param n the number of nodes expected + * @param expectedText expected Text string + * @param expectedElement expected Element + * @throws Exception + */ + @Test(dataProvider = "EntityExpansion") + public void testEntityExpansion(int caseNo, boolean feature, String xml, + int n, String expectedText, String expectedElement) throws Exception { + final Document doc = getDocument(feature, xml); + final Element e = (Element) doc.getElementsByTagName("title").item(0); + final NodeList nl = e.getChildNodes(); + + switch (caseNo) { + case 1: + // The DOM tree should contain just the Text node + Assert.assertTrue(nl.item(0) instanceof Text); + Assert.assertEquals(nl.item(0).getNodeValue(), expectedText); + Assert.assertEquals(nl.getLength(), n); + break; + case 2: + // The DOM tree contains the Text node and an Element (chapter) + Assert.assertTrue(nl.item(0) instanceof Text); + Assert.assertEquals(nl.item(0).getNodeValue(), expectedText); + Assert.assertTrue(nl.item(1) instanceof Element); + Assert.assertEquals(nl.item(1).getNodeName(), expectedElement); + Assert.assertEquals(nl.getLength(), n); + break; + case 3: + // The DOM tree contains just the EntityReference node + Assert.assertTrue(nl.item(0) instanceof EntityReference); + Assert.assertEquals(nl.item(0).getNodeValue(), null); + Assert.assertEquals(nl.getLength(), n); + break; + case 4: + // The DOM tree contains a EntityReference, Text and an Element + Assert.assertTrue(nl.item(0) instanceof EntityReference); + Assert.assertEquals(nl.item(0).getNodeValue(), null); + Assert.assertTrue(nl.item(1) instanceof Text); + Assert.assertEquals(nl.item(1).getNodeValue(), expectedText); + Assert.assertTrue(nl.item(2) instanceof Element); + Assert.assertEquals(nl.item(2).getNodeName(), expectedElement); + Assert.assertEquals(nl.getLength(), n); + break; + } + } + + /** + * Verifies the EntityExpansion feature. When the feature is set to true, the + * parser will attempt to resolve the external reference, that in turn will + * result in an Exception. + * @param feature flag indicating the setting of the feature + * @param xml the XML string + * @throws Exception: when a non-existent external reference is encountered + */ + @Test(dataProvider = "EntityExpansion1", expectedExceptions = java.net.UnknownHostException.class) + public void testEntityExpansion1(boolean feature, String xml) + throws Exception { + final Document doc = getDocument(feature, xml); + final Element e = (Element) doc.getElementsByTagName("title").item(0); + final NodeList nl = e.getChildNodes(); + } + + private static Document getDocument(boolean expand, String xml) + throws SAXException, IOException, ParserConfigurationException { + final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setExpandEntityReferences(expand); + + final DocumentBuilder docBuilder = dbf.newDocumentBuilder(); + + InputStream a = new ByteArrayInputStream(xml.getBytes()); + Document out = docBuilder.parse(a); + return out; + } +} diff --git a/test/jaxp/javax/xml/jaxp/unittest/dom/ElementTraversal.java b/test/jaxp/javax/xml/jaxp/unittest/dom/ElementTraversal.java index 4319a0ad5a1..72a56b8a9a8 100644 --- a/test/jaxp/javax/xml/jaxp/unittest/dom/ElementTraversal.java +++ b/test/jaxp/javax/xml/jaxp/unittest/dom/ElementTraversal.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -125,7 +125,6 @@ public class ElementTraversal { Document doc = null; try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - dbf.setExpandEntityReferences(false); DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(xmlFile); } catch (ParserConfigurationException | SAXException | IOException e) { diff --git a/test/jaxp/javax/xml/jaxp/unittest/dom/ls/LSSerializerTest.java b/test/jaxp/javax/xml/jaxp/unittest/dom/ls/LSSerializerTest.java index 50c79a962a6..a9f15c33cf9 100644 --- a/test/jaxp/javax/xml/jaxp/unittest/dom/ls/LSSerializerTest.java +++ b/test/jaxp/javax/xml/jaxp/unittest/dom/ls/LSSerializerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.testng.Assert; +import org.testng.annotations.DataProvider; import org.testng.annotations.Listeners; import org.testng.annotations.Test; import org.w3c.dom.DOMError; @@ -52,7 +53,7 @@ import org.xml.sax.SAXException; /* * @test - * @bug 8080906 8114834 + * @bug 8080906 8114834 8206132 * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest * @run testng/othervm -DrunSecMngr=true dom.ls.LSSerializerTest * @run testng/othervm dom.ls.LSSerializerTest @@ -225,31 +226,111 @@ public class LSSerializerTest { Assert.assertEquals(XML11_DOCUMENT_OUTPUT, defaultSerialization, "Invalid serialization of XML 1.1 document: "); } + // XML source + private static final String XML = + "\n" + + "" + + " " + + " " + + "text\">" + + " " + + " " + + " ]>" + + " &name1;" + + "b &name2; &name1; b" + + " &name; " + + "&ele1;d" + + " &ele2;eee " + + "<att>" + + " &ele; g" + + "&ele2;" ; + + // result when "entities" = true, equvalent to setting ExpandEntityReference to false + private static final String RESULT_TRUE = + "\n" + + "\n" + + "\n" + + "text'>\n" + + "\n" + + "\n" + + "]>\n" + + "\n" + + " &name1;\n" + + " b &name2;&name1; b\n" + + " &name;\n" + + " &ele1;d\n" + + " &ele2;eee \n" + + " <att>\n" + + " &ele; g\n" + + " &ele2;\n" + + "\n"; + + // result when "entities" = false, equvalent to setting ExpandEntityReference to true + private static final String RESULT_FALSE = + "\n" + + "\n" + + "\n" + + "text'>\n" + + "\n" + + "\n" + + "]>\n" + + "\n" + + " Jo Smith\n" + + " b Jo Smith Jo Smith b\n" + + " Jo Smith \n" + + " \n" + + " \n" + + " text\n" + + " \n" + + " d\n" + + " \n" + + " \n" + + " \n" + + " text\n" + + " \n" + + " eee \n" + + " \n" + + " <att>\n" + + " \n" + + " \n" + + " text\n" + + " \n" + + " g\n" + + " \n" + + " \n" + + " \n" + + " text\n" + + " \n" + + " \n" + + "\n"; + /* - * @bug 8114834 test entity reference, nested entity reference when entities - * is true and false + * DataProvider: for testing the entities parameter + * Data columns: xml source, entities setting, expected result */ - @Test - public void testEntityReference() throws Exception { - final String XML_DOCUMENT = "\n" + - "" + - " " + - " " + - "text\">" + - " " + - " " + - " ]>" + - " &name1;" + - "b &name2; &name1; b" + - " &name; " + - "&ele1;d" + - " &ele2;eee " + - "<att>" + - " &ele; g" + - "&ele2;" ; - + @DataProvider(name = "entities") + Object[][] getData() throws Exception { + return new Object[][]{ + {XML, Boolean.TRUE, RESULT_TRUE}, + {XML, Boolean.FALSE, RESULT_FALSE}, + }; + } + /** + * Tests serializing DOM Document with DOMConfiguration's "entities" parameter. + * + * @param source the XML source + * @param entities the entities parameter setting + * @param expected expected string result + * @throws Exception + * @bug 8114834 8206132 + */ + @Test(dataProvider = "entities") + public void testEntityReference(String source, Boolean entities, String expected) + throws Exception { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); @@ -257,76 +338,18 @@ public class LSSerializerTest { DOMImplementationLS domImplementationLS = (DOMImplementationLS) domImplementation; LSParser domParser = domImplementationLS.createLSParser(MODE_SYNCHRONOUS, null); - domParser.getDomConfig().setParameter("entities", Boolean.TRUE); + domParser.getDomConfig().setParameter("entities", entities); LSInput src = domImplementationLS.createLSInput(); - src.setStringData(XML_DOCUMENT); + src.setStringData(source); Document document = domParser.parse(src); LSSerializer lsSerializer = domImplementationLS.createLSSerializer(); - lsSerializer.getDomConfig().setParameter("format-pretty-print", true); - System.out.println("test with default entities is " + lsSerializer.getDomConfig().getParameter("entities")); - Assert.assertEquals(lsSerializer.writeToString(document), - "\n" + - "\n" + - "\n" + - "text'>\n" + - "\n" + - "\n" + - "]>\n" + - "\n" + - " &name1;Jo Smith\n" + - " b &name2;Jo Smith &name1;Jo Smith b\n" + - " &name;Jo Smith \n" + - " &ele1;d\n" + - " &ele2;eee \n" + - " <att>\n" + - " &ele; g\n" + - " &ele2;\n" + - "\n"); - - lsSerializer.getDomConfig().setParameter("entities", Boolean.FALSE); - System.out.println("test with entities is false"); - Assert.assertEquals(lsSerializer.writeToString(document), - "\n" + - "\n" + - "\n" + - "text'>\n" + - "\n" + - "\n" + - "]>\n" + - "\n" + - " &name;Jo Smith\n" + - " b &name;Jo Smith &name;Jo Smith b\n" + - " &name;Jo Smith \n" + - " \n" + - " \n" + - " text\n" + - " \n" + - " d\n" + - " \n" + - " \n" + - " \n" + - " text\n" + - " \n" + - " eee \n" + - " \n" + - " <att>\n" + - " \n" + - " \n" + - " text\n" + - " \n" + - " g\n" + - " \n" + - " \n" + - " \n" + - " text\n" + - " \n" + - " \n" + - "\n"); + System.out.println("test with default entities is " + + lsSerializer.getDomConfig().getParameter("entities")); + String result = lsSerializer.writeToString(document); + Assert.assertEquals(result, expected); } } From cd9b1aabb091dc1164f7bb4bb28eac242ff8392a Mon Sep 17 00:00:00 2001 From: Kim Barrett Date: Tue, 5 Feb 2019 13:21:59 -0500 Subject: [PATCH 19/36] 8218164: Improve local control of compiler warnings Windows warning push/pop and gcc/Windows warning suppression macros. Reviewed-by: dholmes, tschatzl --- src/hotspot/share/compiler/methodMatcher.cpp | 10 +-- src/hotspot/share/gc/g1/g1ConcurrentMark.hpp | 11 ++-- .../share/utilities/compilerWarnings.hpp | 56 +++++------------ .../share/utilities/compilerWarnings_gcc.hpp | 63 +++++++++++++++++++ .../utilities/compilerWarnings_solstudio.hpp | 30 +++++++++ .../utilities/compilerWarnings_visCPP.hpp | 33 ++++++++++ .../share/utilities/compilerWarnings_xlc.hpp | 30 +++++++++ 7 files changed, 180 insertions(+), 53 deletions(-) create mode 100644 src/hotspot/share/utilities/compilerWarnings_gcc.hpp create mode 100644 src/hotspot/share/utilities/compilerWarnings_solstudio.hpp create mode 100644 src/hotspot/share/utilities/compilerWarnings_visCPP.hpp create mode 100644 src/hotspot/share/utilities/compilerWarnings_xlc.hpp diff --git a/src/hotspot/share/compiler/methodMatcher.cpp b/src/hotspot/share/compiler/methodMatcher.cpp index 8cd2b922081..fc03bba33da 100644 --- a/src/hotspot/share/compiler/methodMatcher.cpp +++ b/src/hotspot/share/compiler/methodMatcher.cpp @@ -237,12 +237,10 @@ void skip_leading_spaces(char*& line, int* total_bytes_read ) { } } -#ifdef _MSC_VER -#pragma warning(push) +PRAGMA_DIAG_PUSH // warning C4189: The file contains a character that cannot be represented // in the current code page -#pragma warning(disable : 4819) -#endif +PRAGMA_DISABLE_MSVC_WARNING(4819) void MethodMatcher::parse_method_pattern(char*& line, const char*& error_msg, MethodMatcher* matcher) { MethodMatcher::Mode c_match; MethodMatcher::Mode m_match; @@ -312,9 +310,7 @@ void MethodMatcher::parse_method_pattern(char*& line, const char*& error_msg, Me error_msg = "Could not parse method pattern"; } } -#ifdef _MSC_VER -#pragma warning(pop) -#endif +PRAGMA_DIAG_POP bool MethodMatcher::matches(const methodHandle& method) const { Symbol* class_name = method->method_holder()->name(); diff --git a/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp b/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp index b879e83680b..7051815cb30 100644 --- a/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp +++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp @@ -32,6 +32,7 @@ #include "gc/g1/heapRegionSet.hpp" #include "gc/shared/taskqueue.hpp" #include "memory/allocation.hpp" +#include "utilities/compilerWarnings.hpp" class ConcurrentGCTimer; class G1ConcurrentMarkThread; @@ -43,11 +44,9 @@ class G1OldTracer; class G1RegionToSpaceMapper; class G1SurvivorRegions; -#ifdef _MSC_VER -#pragma warning(push) +PRAGMA_DIAG_PUSH // warning C4522: multiple assignment operators specified -#pragma warning(disable:4522) -#endif +PRAGMA_DISABLE_MSVC_WARNING(4522) // This is a container class for either an oop or a continuation address for // mark stack entries. Both are pushed onto the mark stack. @@ -93,9 +92,7 @@ public: bool is_null() const { return _holder == NULL; } }; -#ifdef _MSC_VER -#pragma warning(pop) -#endif +PRAGMA_DIAG_POP typedef GenericTaskQueue G1CMTaskQueue; typedef GenericTaskQueueSet G1CMTaskQueueSet; diff --git a/src/hotspot/share/utilities/compilerWarnings.hpp b/src/hotspot/share/utilities/compilerWarnings.hpp index 9fb23f1c08f..01a1c4a2b1f 100644 --- a/src/hotspot/share/utilities/compilerWarnings.hpp +++ b/src/hotspot/share/utilities/compilerWarnings.hpp @@ -27,42 +27,27 @@ // Macros related to control of compiler warnings. -// We presently only have interesting macros here for gcc and variants, -// so it's not worth going through the COMPILER_HEADER() dispatch, with -// all the non-gcc files being empty. -#ifdef TARGET_COMPILER_gcc +#include "utilities/macros.hpp" -// Diagnostic pragmas like the ones defined below in PRAGMA_FORMAT_NONLITERAL_IGNORED -// were only introduced in GCC 4.2. Because we have no other possibility to ignore -// these warnings for older versions of GCC, we simply don't decorate our printf-style -// functions with __attribute__(format) in that case. -#if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2)) || (__GNUC__ > 4) -#ifndef ATTRIBUTE_PRINTF -#define ATTRIBUTE_PRINTF(fmt,vargs) __attribute__((format(printf, fmt, vargs))) -#endif -#ifndef ATTRIBUTE_SCANF -#define ATTRIBUTE_SCANF(fmt,vargs) __attribute__((format(scanf, fmt, vargs))) -#endif -#endif // gcc version check - -#define PRAGMA_FORMAT_NONLITERAL_IGNORED _Pragma("GCC diagnostic ignored \"-Wformat-nonliteral\"") \ - _Pragma("GCC diagnostic ignored \"-Wformat-security\"") -#define PRAGMA_FORMAT_IGNORED _Pragma("GCC diagnostic ignored \"-Wformat\"") - -#if defined(__clang_major__) && \ - (__clang_major__ >= 4 || \ - (__clang_major__ >= 3 && __clang_minor__ >= 1)) || \ - ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) -// Tested to work with clang version 3.1 and better. -#define PRAGMA_DIAG_PUSH _Pragma("GCC diagnostic push") -#define PRAGMA_DIAG_POP _Pragma("GCC diagnostic pop") - -#endif // clang/gcc version check - -#endif // TARGET_COMPILER_gcc +#include COMPILER_HEADER(utilities/compilerWarnings) // Defaults when not defined for the TARGET_COMPILER_xxx. +#ifndef PRAGMA_DIAG_PUSH +#define PRAGMA_DIAG_PUSH +#endif +#ifndef PRAGMA_DIAG_POP +#define PRAGMA_DIAG_POP +#endif + +#ifndef PRAGMA_DISABLE_GCC_WARNING +#define PRAGMA_DISABLE_GCC_WARNING(name) +#endif + +#ifndef PRAGMA_DISABLE_MSVC_WARNING +#define PRAGMA_DISABLE_MSVC_WARNING(num) +#endif + #ifndef ATTRIBUTE_PRINTF #define ATTRIBUTE_PRINTF(fmt, vargs) #endif @@ -77,11 +62,4 @@ #define PRAGMA_FORMAT_IGNORED #endif -#ifndef PRAGMA_DIAG_PUSH -#define PRAGMA_DIAG_PUSH -#endif -#ifndef PRAGMA_DIAG_POP -#define PRAGMA_DIAG_POP -#endif - #endif // SHARE_UTILITIES_COMPILERWARNINGS_HPP diff --git a/src/hotspot/share/utilities/compilerWarnings_gcc.hpp b/src/hotspot/share/utilities/compilerWarnings_gcc.hpp new file mode 100644 index 00000000000..23bbbab9dcc --- /dev/null +++ b/src/hotspot/share/utilities/compilerWarnings_gcc.hpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_UTILITIES_COMPILERWARNINGS_GCC_HPP +#define SHARE_UTILITIES_COMPILERWARNINGS_GCC_HPP + +// Macros related to control of compiler warnings. + +// Diagnostic pragmas like the ones defined below in PRAGMA_FORMAT_NONLITERAL_IGNORED +// were only introduced in GCC 4.2. Because we have no other possibility to ignore +// these warnings for older versions of GCC, we simply don't decorate our printf-style +// functions with __attribute__(format) in that case. +#if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2)) || (__GNUC__ > 4) +#ifndef ATTRIBUTE_PRINTF +#define ATTRIBUTE_PRINTF(fmt,vargs) __attribute__((format(printf, fmt, vargs))) +#endif +#ifndef ATTRIBUTE_SCANF +#define ATTRIBUTE_SCANF(fmt,vargs) __attribute__((format(scanf, fmt, vargs))) +#endif +#endif // gcc version check + +#define PRAGMA_DISABLE_GCC_WARNING_AUX(x) _Pragma(#x) +#define PRAGMA_DISABLE_GCC_WARNING(option_string) \ + PRAGMA_DISABLE_GCC_WARNING_AUX(GCC diagnostic ignored option_string) + +#define PRAGMA_FORMAT_NONLITERAL_IGNORED \ + PRAGMA_DISABLE_GCC_WARNING("-Wformat-nonliteral") \ + PRAGMA_DISABLE_GCC_WARNING("-Wformat-security") + +#define PRAGMA_FORMAT_IGNORED PRAGMA_DISABLE_GCC_WARNING("-Wformat") + +#if defined(__clang_major__) && \ + (__clang_major__ >= 4 || \ + (__clang_major__ >= 3 && __clang_minor__ >= 1)) || \ + ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) +// Tested to work with clang version 3.1 and better. +#define PRAGMA_DIAG_PUSH _Pragma("GCC diagnostic push") +#define PRAGMA_DIAG_POP _Pragma("GCC diagnostic pop") + +#endif // clang/gcc version check + +#endif // SHARE_UTILITIES_COMPILERWARNINGS_GCC_HPP diff --git a/src/hotspot/share/utilities/compilerWarnings_solstudio.hpp b/src/hotspot/share/utilities/compilerWarnings_solstudio.hpp new file mode 100644 index 00000000000..79003264fb7 --- /dev/null +++ b/src/hotspot/share/utilities/compilerWarnings_solstudio.hpp @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_UTILITIES_COMPILERWARNINGS_SOLSTUDIO_HPP +#define SHARE_UTILITIES_COMPILERWARNINGS_SOLSTUDIO_HPP + +// Nothing here yet. + +#endif // SHARE_UTILITIES_COMPILERWARNINGS_SOLSTUDIO_HPP diff --git a/src/hotspot/share/utilities/compilerWarnings_visCPP.hpp b/src/hotspot/share/utilities/compilerWarnings_visCPP.hpp new file mode 100644 index 00000000000..1df94622b1d --- /dev/null +++ b/src/hotspot/share/utilities/compilerWarnings_visCPP.hpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_UTILITIES_COMPILERWARNINGS_VISCPP_HPP +#define SHARE_UTILITIES_COMPILERWARNINGS_VISCPP_HPP + +#define PRAGMA_DIAG_PUSH __pragma(warning(push)) +#define PRAGMA_DIAG_POP __pragma(warning(pop)) + +#define PRAGMA_DISABLE_MSVC_WARNING(num) __pragma(warning(disable : num)) + +#endif // SHARE_UTILITIES_COMPILERWARNINGS_VISCPP_HPP diff --git a/src/hotspot/share/utilities/compilerWarnings_xlc.hpp b/src/hotspot/share/utilities/compilerWarnings_xlc.hpp new file mode 100644 index 00000000000..76782c105af --- /dev/null +++ b/src/hotspot/share/utilities/compilerWarnings_xlc.hpp @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_UTILITIES_COMPILERWARNINGS_XLC_HPP +#define SHARE_UTILITIES_COMPILERWARNINGS_XLC_HPP + +// Nothing here yet. + +#endif // SHARE_UTILITIES_COMPILERWARNINGS_XLC_HPP From 4e8a04bbf13650cea5eea4ef77c73202b3624801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20=C3=96sterlund?= Date: Tue, 5 Feb 2019 20:06:10 +0100 Subject: [PATCH 20/36] 8216541: CompiledICHolders of VM locked unloaded nmethods are released too late Reviewed-by: kvn, thartmann --- src/hotspot/share/code/compiledIC.cpp | 14 ++-------- src/hotspot/share/code/compiledIC.hpp | 4 --- src/hotspot/share/code/compiledMethod.cpp | 7 ++--- src/hotspot/share/code/compiledMethod.hpp | 2 +- src/hotspot/share/code/nmethod.cpp | 12 +++++++-- src/hotspot/share/runtime/sweeper.cpp | 33 +++-------------------- src/hotspot/share/runtime/sweeper.hpp | 1 - 7 files changed, 21 insertions(+), 52 deletions(-) diff --git a/src/hotspot/share/code/compiledIC.cpp b/src/hotspot/share/code/compiledIC.cpp index d1c31f69acc..c12049b6dc1 100644 --- a/src/hotspot/share/code/compiledIC.cpp +++ b/src/hotspot/share/code/compiledIC.cpp @@ -51,7 +51,8 @@ CompiledICLocker::CompiledICLocker(CompiledMethod* method) : _method(method), _behaviour(CompiledICProtectionBehaviour::current()), - _locked(_behaviour->lock(_method)){ + _locked(_behaviour->lock(_method)), + _nsv(true, !SafepointSynchronize::is_at_safepoint()) { } CompiledICLocker::~CompiledICLocker() { @@ -583,17 +584,6 @@ bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site, const return is_icholder_entry(dest); } -// Release the CompiledICHolder* associated with this call site is there is one. -void CompiledIC::cleanup_call_site(virtual_call_Relocation* call_site, const CompiledMethod* cm) { - assert(cm->is_nmethod(), "must be nmethod"); - // This call site might have become stale so inspect it carefully. - NativeCall* call = nativeCall_at(call_site->addr()); - if (is_icholder_entry(call->destination())) { - NativeMovConstReg* value = nativeMovConstReg_at(call_site->cached_value()); - InlineCacheBuffer::queue_for_release((CompiledICHolder*)value->data()); - } -} - // ---------------------------------------------------------------------------- bool CompiledStaticCall::set_to_clean(bool in_use) { diff --git a/src/hotspot/share/code/compiledIC.hpp b/src/hotspot/share/code/compiledIC.hpp index 803b6b12c10..31437252c5c 100644 --- a/src/hotspot/share/code/compiledIC.hpp +++ b/src/hotspot/share/code/compiledIC.hpp @@ -226,10 +226,6 @@ class CompiledIC: public ResourceObj { friend CompiledIC* CompiledIC_at(Relocation* call_site); friend CompiledIC* CompiledIC_at(RelocIterator* reloc_iter); - // This is used to release CompiledICHolder*s from nmethods that - // are about to be freed. The callsite might contain other stale - // values of other kinds so it must be careful. - static void cleanup_call_site(virtual_call_Relocation* call_site, const CompiledMethod* cm); static bool is_icholder_call_site(virtual_call_Relocation* call_site, const CompiledMethod* cm); // Return the cached_metadata/destination associated with this inline cache. If the cache currently points diff --git a/src/hotspot/share/code/compiledMethod.cpp b/src/hotspot/share/code/compiledMethod.cpp index dbcd7b8604f..b657930015b 100644 --- a/src/hotspot/share/code/compiledMethod.cpp +++ b/src/hotspot/share/code/compiledMethod.cpp @@ -399,15 +399,16 @@ void CompiledMethod::clear_inline_caches() { } } -// Clear ICStubs of all compiled ICs -void CompiledMethod::clear_ic_stubs() { +// Clear IC callsites, releasing ICStubs of all compiled ICs +// as well as any associated CompiledICHolders. +void CompiledMethod::clear_ic_callsites() { assert(CompiledICLocker::is_safe(this), "mt unsafe call"); ResourceMark rm; RelocIterator iter(this); while(iter.next()) { if (iter.type() == relocInfo::virtual_call_type) { CompiledIC* ic = CompiledIC_at(&iter); - ic->clear_ic_stub(); + ic->set_to_clean(false); } } } diff --git a/src/hotspot/share/code/compiledMethod.hpp b/src/hotspot/share/code/compiledMethod.hpp index 2d0c0864899..f67b9f870fe 100644 --- a/src/hotspot/share/code/compiledMethod.hpp +++ b/src/hotspot/share/code/compiledMethod.hpp @@ -359,7 +359,7 @@ public: void cleanup_inline_caches(bool clean_all); virtual void clear_inline_caches(); - void clear_ic_stubs(); + void clear_ic_callsites(); // Verify and count cached icholder relocations. int verify_icholder_relocations(); diff --git a/src/hotspot/share/code/nmethod.cpp b/src/hotspot/share/code/nmethod.cpp index 340be95ba7d..c6fcb93d27c 100644 --- a/src/hotspot/share/code/nmethod.cpp +++ b/src/hotspot/share/code/nmethod.cpp @@ -1099,6 +1099,12 @@ void nmethod::make_unloaded() { assert(SafepointSynchronize::is_at_safepoint() || Thread::current()->is_ConcurrentGC_thread(), "must be at safepoint"); + { + // Clear ICStubs and release any CompiledICHolders. + CompiledICLocker ml(this); + clear_ic_callsites(); + } + // Unregister must be done before the state change { MutexLockerEx ml(SafepointSynchronize::is_at_safepoint() ? NULL : CodeCache_lock, @@ -1291,10 +1297,11 @@ bool nmethod::make_not_entrant_or_zombie(int state) { } // Clear ICStubs to prevent back patching stubs of zombie or flushed - // nmethods during the next safepoint (see ICStub::finalize). + // nmethods during the next safepoint (see ICStub::finalize), as well + // as to free up CompiledICHolder resources. { CompiledICLocker ml(this); - clear_ic_stubs(); + clear_ic_callsites(); } // zombie only - if a JVMTI agent has enabled the CompiledMethodUnload @@ -1326,6 +1333,7 @@ bool nmethod::make_not_entrant_or_zombie(int state) { } void nmethod::flush() { + MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); // Note that there are no valid oops in the nmethod anymore. assert(!is_osr_method() || is_unloaded() || is_zombie(), "osr nmethod must be unloaded or zombie before flushing"); diff --git a/src/hotspot/share/runtime/sweeper.cpp b/src/hotspot/share/runtime/sweeper.cpp index 59edaad8d97..6e4846e673f 100644 --- a/src/hotspot/share/runtime/sweeper.cpp +++ b/src/hotspot/share/runtime/sweeper.cpp @@ -663,27 +663,6 @@ class CompiledMethodMarker: public StackObj { } }; -void NMethodSweeper::release_compiled_method(CompiledMethod* nm) { - // Make sure the released nmethod is no longer referenced by the sweeper thread - CodeCacheSweeperThread* thread = (CodeCacheSweeperThread*)JavaThread::current(); - thread->set_scanned_compiled_method(NULL); - - // Clean up any CompiledICHolders - { - ResourceMark rm; - RelocIterator iter(nm); - CompiledICLocker ml(nm); - while (iter.next()) { - if (iter.type() == relocInfo::virtual_call_type) { - CompiledIC::cleanup_call_site(iter.virtual_call_reloc(), nm); - } - } - } - - MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); - nm->flush(); -} - NMethodSweeper::MethodStateChange NMethodSweeper::process_compiled_method(CompiledMethod* cm) { assert(cm != NULL, "sanity"); assert(!CodeCache_lock->owned_by_self(), "just checking"); @@ -697,7 +676,7 @@ NMethodSweeper::MethodStateChange NMethodSweeper::process_compiled_method(Compil // Skip methods that are currently referenced by the VM if (cm->is_locked_by_vm()) { // But still remember to clean-up inline caches for alive nmethods - if (cm->is_alive() && !cm->is_unloading()) { + if (cm->is_alive()) { // Clean inline caches that point to zombie/non-entrant/unloaded nmethods cm->cleanup_inline_caches(false); SWEEP(cm); @@ -709,7 +688,7 @@ NMethodSweeper::MethodStateChange NMethodSweeper::process_compiled_method(Compil // All inline caches that referred to this nmethod were cleaned in the // previous sweeper cycle. Now flush the nmethod from the code cache. assert(!cm->is_locked_by_vm(), "must not flush locked Compiled Methods"); - release_compiled_method(cm); + cm->flush(); assert(result == None, "sanity"); result = Flushed; } else if (cm->is_not_entrant()) { @@ -728,7 +707,7 @@ NMethodSweeper::MethodStateChange NMethodSweeper::process_compiled_method(Compil // Make sure that we unregistered the nmethod with the heap and flushed all // dependencies before removing the nmethod (done in make_zombie()). assert(cm->is_zombie(), "nmethod must be unregistered"); - release_compiled_method(cm); + cm->flush(); assert(result == None, "sanity"); result = Flushed; } else { @@ -744,14 +723,10 @@ NMethodSweeper::MethodStateChange NMethodSweeper::process_compiled_method(Compil } else if (cm->is_unloaded()) { // Code is unloaded, so there are no activations on the stack. // Convert the nmethod to zombie or flush it directly in the OSR case. - - // Clean ICs of unloaded nmethods as well because they may reference other - // unloaded nmethods that may be flushed earlier in the sweeper cycle. - cm->cleanup_inline_caches(false); if (cm->is_osr_method()) { SWEEP(cm); // No inline caches will ever point to osr methods, so we can just remove it - release_compiled_method(cm); + cm->flush(); assert(result == None, "sanity"); result = Flushed; } else { diff --git a/src/hotspot/share/runtime/sweeper.hpp b/src/hotspot/share/runtime/sweeper.hpp index ca86bacb6d3..7121d18724f 100644 --- a/src/hotspot/share/runtime/sweeper.hpp +++ b/src/hotspot/share/runtime/sweeper.hpp @@ -89,7 +89,6 @@ class NMethodSweeper : public AllStatic { static Tickspan _peak_sweep_fraction_time; // Peak time sweeping one fraction static MethodStateChange process_compiled_method(CompiledMethod *nm); - static void release_compiled_method(CompiledMethod* nm); static void init_sweeper_log() NOT_DEBUG_RETURN; static bool wait_for_stack_scanning(); From c94cdddbdd7d7e0737ee4fdaec0818316f6df7a2 Mon Sep 17 00:00:00 2001 From: Patricio Chilano Mateo Date: Tue, 5 Feb 2019 15:12:13 -0500 Subject: [PATCH 21/36] 8210832: Remove sneaky locking in class Monitor Removed sneaky locking and simplified vm monitors implementation Co-authored-by: David Holmes Reviewed-by: rehn, dcubed, pliden, dholmes, coleenp --- src/hotspot/os/posix/os_posix.cpp | 69 + src/hotspot/os/posix/os_posix.hpp | 17 + src/hotspot/os/solaris/os_solaris.cpp | 66 + src/hotspot/os/solaris/os_solaris.hpp | 17 + src/hotspot/os/windows/os_windows.cpp | 49 + src/hotspot/os/windows/os_windows.hpp | 17 + src/hotspot/share/logging/logTag.hpp | 1 + .../share/runtime/interfaceSupport.inline.hpp | 63 + src/hotspot/share/runtime/mutex.cpp | 1190 ++--------------- src/hotspot/share/runtime/mutex.hpp | 96 +- src/hotspot/share/runtime/mutexLocker.hpp | 10 +- src/hotspot/share/runtime/safepoint.cpp | 43 +- src/hotspot/share/runtime/safepoint.hpp | 2 +- .../share/runtime/safepointMechanism.hpp | 7 +- .../runtime/safepointMechanism.inline.hpp | 14 + src/hotspot/share/runtime/thread.cpp | 2 - src/hotspot/share/runtime/thread.hpp | 3 - 17 files changed, 509 insertions(+), 1157 deletions(-) diff --git a/src/hotspot/os/posix/os_posix.cpp b/src/hotspot/os/posix/os_posix.cpp index c0ec207181c..af7f3dece88 100644 --- a/src/hotspot/os/posix/os_posix.cpp +++ b/src/hotspot/os/posix/os_posix.cpp @@ -2215,5 +2215,74 @@ void Parker::unpark() { } } +// Platform Monitor implementation + +os::PlatformMonitor::PlatformMonitor() { + int status = pthread_cond_init(&_cond, _condAttr); + assert_status(status == 0, status, "cond_init"); + status = pthread_mutex_init(&_mutex, _mutexAttr); + assert_status(status == 0, status, "mutex_init"); +} + +os::PlatformMonitor::~PlatformMonitor() { + int status = pthread_cond_destroy(&_cond); + assert_status(status == 0, status, "cond_destroy"); + status = pthread_mutex_destroy(&_mutex); + assert_status(status == 0, status, "mutex_destroy"); +} + +void os::PlatformMonitor::lock() { + int status = pthread_mutex_lock(&_mutex); + assert_status(status == 0, status, "mutex_lock"); +} + +void os::PlatformMonitor::unlock() { + int status = pthread_mutex_unlock(&_mutex); + assert_status(status == 0, status, "mutex_unlock"); +} + +bool os::PlatformMonitor::try_lock() { + int status = pthread_mutex_trylock(&_mutex); + assert_status(status == 0 || status == EBUSY, status, "mutex_trylock"); + return status == 0; +} + +// Must already be locked +int os::PlatformMonitor::wait(jlong millis) { + assert(millis >= 0, "negative timeout"); + if (millis > 0) { + struct timespec abst; + // We have to watch for overflow when converting millis to nanos, + // but if millis is that large then we will end up limiting to + // MAX_SECS anyway, so just do that here. + if (millis / MILLIUNITS > MAX_SECS) { + millis = jlong(MAX_SECS) * MILLIUNITS; + } + to_abstime(&abst, millis * (NANOUNITS / MILLIUNITS), false, false); + + int ret = OS_TIMEOUT; + int status = pthread_cond_timedwait(&_cond, &_mutex, &abst); + assert_status(status == 0 || status == ETIMEDOUT, + status, "cond_timedwait"); + if (status == 0) { + ret = OS_OK; + } + return ret; + } else { + int status = pthread_cond_wait(&_cond, &_mutex); + assert_status(status == 0, status, "cond_wait"); + return OS_OK; + } +} + +void os::PlatformMonitor::notify() { + int status = pthread_cond_signal(&_cond); + assert_status(status == 0, status, "cond_signal"); +} + +void os::PlatformMonitor::notify_all() { + int status = pthread_cond_broadcast(&_cond); + assert_status(status == 0, status, "cond_broadcast"); +} #endif // !SOLARIS diff --git a/src/hotspot/os/posix/os_posix.hpp b/src/hotspot/os/posix/os_posix.hpp index 75973188800..ef5e088fe9e 100644 --- a/src/hotspot/os/posix/os_posix.hpp +++ b/src/hotspot/os/posix/os_posix.hpp @@ -224,6 +224,23 @@ class PlatformParker : public CHeapObj { PlatformParker(); }; +// Platform specific implementation that underpins VM Monitor/Mutex class +class PlatformMonitor : public CHeapObj { + private: + pthread_mutex_t _mutex; // Native mutex for locking + pthread_cond_t _cond; // Native condition variable for blocking + + public: + PlatformMonitor(); + ~PlatformMonitor(); + void lock(); + void unlock(); + bool try_lock(); + int wait(jlong millis); + void notify(); + void notify_all(); +}; + #endif // !SOLARIS #endif // OS_POSIX_OS_POSIX_HPP diff --git a/src/hotspot/os/solaris/os_solaris.cpp b/src/hotspot/os/solaris/os_solaris.cpp index 05b0df5d678..b866e833474 100644 --- a/src/hotspot/os/solaris/os_solaris.cpp +++ b/src/hotspot/os/solaris/os_solaris.cpp @@ -5192,6 +5192,72 @@ void Parker::unpark() { } } +// Platform Monitor implementation + +os::PlatformMonitor::PlatformMonitor() { + int status = os::Solaris::cond_init(&_cond); + assert_status(status == 0, status, "cond_init"); + status = os::Solaris::mutex_init(&_mutex); + assert_status(status == 0, status, "mutex_init"); +} + +os::PlatformMonitor::~PlatformMonitor() { + int status = os::Solaris::cond_destroy(&_cond); + assert_status(status == 0, status, "cond_destroy"); + status = os::Solaris::mutex_destroy(&_mutex); + assert_status(status == 0, status, "mutex_destroy"); +} + +void os::PlatformMonitor::lock() { + int status = os::Solaris::mutex_lock(&_mutex); + assert_status(status == 0, status, "mutex_lock"); +} + +void os::PlatformMonitor::unlock() { + int status = os::Solaris::mutex_unlock(&_mutex); + assert_status(status == 0, status, "mutex_unlock"); +} + +bool os::PlatformMonitor::try_lock() { + int status = os::Solaris::mutex_trylock(&_mutex); + assert_status(status == 0 || status == EBUSY, status, "mutex_trylock"); + return status == 0; +} + +// Must already be locked +int os::PlatformMonitor::wait(jlong millis) { + assert(millis >= 0, "negative timeout"); + if (millis > 0) { + timestruc_t abst; + int ret = OS_TIMEOUT; + compute_abstime(&abst, millis); + int status = os::Solaris::cond_timedwait(&_cond, &_mutex, &abst); + assert_status(status == 0 || status == EINTR || + status == ETIME || status == ETIMEDOUT, + status, "cond_timedwait"); + // EINTR acts as spurious wakeup - which is permitted anyway + if (status == 0 || status == EINTR) { + ret = OS_OK; + } + return ret; + } else { + int status = os::Solaris::cond_wait(&_cond, &_mutex); + assert_status(status == 0 || status == EINTR, + status, "cond_wait"); + return OS_OK; + } +} + +void os::PlatformMonitor::notify() { + int status = os::Solaris::cond_signal(&_cond); + assert_status(status == 0, status, "cond_signal"); +} + +void os::PlatformMonitor::notify_all() { + int status = os::Solaris::cond_broadcast(&_cond); + assert_status(status == 0, status, "cond_broadcast"); +} + extern char** environ; // Run the specified command in a separate process. Return its exit value, diff --git a/src/hotspot/os/solaris/os_solaris.hpp b/src/hotspot/os/solaris/os_solaris.hpp index 2ebbe736f9a..84200b26a3e 100644 --- a/src/hotspot/os/solaris/os_solaris.hpp +++ b/src/hotspot/os/solaris/os_solaris.hpp @@ -335,4 +335,21 @@ class PlatformParker : public CHeapObj { } }; +// Platform specific implementation that underpins VM Monitor/Mutex class +class PlatformMonitor : public CHeapObj { + private: + mutex_t _mutex; // Native mutex for locking + cond_t _cond; // Native condition variable for blocking + + public: + PlatformMonitor(); + ~PlatformMonitor(); + void lock(); + void unlock(); + bool try_lock(); + int wait(jlong millis); + void notify(); + void notify_all(); +}; + #endif // OS_SOLARIS_OS_SOLARIS_HPP diff --git a/src/hotspot/os/windows/os_windows.cpp b/src/hotspot/os/windows/os_windows.cpp index 217bdefbf7d..4e2c1d49631 100644 --- a/src/hotspot/os/windows/os_windows.cpp +++ b/src/hotspot/os/windows/os_windows.cpp @@ -5277,6 +5277,55 @@ void Parker::unpark() { SetEvent(_ParkEvent); } +// Platform Monitor implementation + +os::PlatformMonitor::PlatformMonitor() { + InitializeConditionVariable(&_cond); + InitializeCriticalSection(&_mutex); +} + +os::PlatformMonitor::~PlatformMonitor() { + DeleteCriticalSection(&_mutex); +} + +void os::PlatformMonitor::lock() { + EnterCriticalSection(&_mutex); +} + +void os::PlatformMonitor::unlock() { + LeaveCriticalSection(&_mutex); +} + +bool os::PlatformMonitor::try_lock() { + return TryEnterCriticalSection(&_mutex); +} + +// Must already be locked +int os::PlatformMonitor::wait(jlong millis) { + assert(millis >= 0, "negative timeout"); + int ret = OS_TIMEOUT; + int status = SleepConditionVariableCS(&_cond, &_mutex, + millis == 0 ? INFINITE : millis); + if (status != 0) { + ret = OS_OK; + } + #ifndef PRODUCT + else { + DWORD err = GetLastError(); + assert(err == ERROR_TIMEOUT, "SleepConditionVariableCS: %ld:", err); + } + #endif + return ret; +} + +void os::PlatformMonitor::notify() { + WakeConditionVariable(&_cond); +} + +void os::PlatformMonitor::notify_all() { + WakeAllConditionVariable(&_cond); +} + // Run the specified command in a separate process. Return its exit value, // or -1 on failure (e.g. can't create a new process). int os::fork_and_exec(char* cmd, bool use_vfork_if_available) { diff --git a/src/hotspot/os/windows/os_windows.hpp b/src/hotspot/os/windows/os_windows.hpp index e448ce512b6..b3dd578bb8d 100644 --- a/src/hotspot/os/windows/os_windows.hpp +++ b/src/hotspot/os/windows/os_windows.hpp @@ -187,4 +187,21 @@ class PlatformParker : public CHeapObj { } ; +// Platform specific implementation that underpins VM Monitor/Mutex class +class PlatformMonitor : public CHeapObj { + private: + CRITICAL_SECTION _mutex; // Native mutex for locking + CONDITION_VARIABLE _cond; // Native condition variable for blocking + + public: + PlatformMonitor(); + ~PlatformMonitor(); + void lock(); + void unlock(); + bool try_lock(); + int wait(jlong millis); + void notify(); + void notify_all(); +}; + #endif // OS_WINDOWS_OS_WINDOWS_HPP diff --git a/src/hotspot/share/logging/logTag.hpp b/src/hotspot/share/logging/logTag.hpp index 81e94276efc..3a9546d0545 100644 --- a/src/hotspot/share/logging/logTag.hpp +++ b/src/hotspot/share/logging/logTag.hpp @@ -169,6 +169,7 @@ LOG_TAG(mirror) \ LOG_TAG(verification) \ LOG_TAG(verify) \ + LOG_TAG(vmmonitor) \ LOG_TAG(vmoperation) \ LOG_TAG(vmthread) \ LOG_TAG(vtables) \ diff --git a/src/hotspot/share/runtime/interfaceSupport.inline.hpp b/src/hotspot/share/runtime/interfaceSupport.inline.hpp index 59eee30c597..ebf0998d595 100644 --- a/src/hotspot/share/runtime/interfaceSupport.inline.hpp +++ b/src/hotspot/share/runtime/interfaceSupport.inline.hpp @@ -286,6 +286,69 @@ class ThreadBlockInVM : public ThreadStateTransition { } }; +// Unlike ThreadBlockInVM, this class is designed to avoid certain deadlock scenarios while making +// transitions inside class Monitor in cases where we need to block for a safepoint or handshake. It +// receives an extra argument compared to ThreadBlockInVM, the address of a pointer to the monitor we +// are trying to acquire. This will be used to access and release the monitor if needed to avoid +// said deadlocks. +// It works like ThreadBlockInVM but differs from it in two ways: +// - When transitioning in (constructor), it checks for safepoints without blocking, i.e., calls +// back if needed to allow a pending safepoint to continue but does not block in it. +// - When transitioning back (destructor), if there is a pending safepoint or handshake it releases +// the monitor that is only partially acquired. +class ThreadBlockInVMWithDeadlockCheck : public ThreadStateTransition { + private: + Monitor** _in_flight_monitor_adr; + + void release_monitor() { + assert(_in_flight_monitor_adr != NULL, "_in_flight_monitor_adr should have been set on constructor"); + Monitor* in_flight_monitor = *_in_flight_monitor_adr; + if (in_flight_monitor != NULL) { + in_flight_monitor->release_for_safepoint(); + *_in_flight_monitor_adr = NULL; + } + } + public: + ThreadBlockInVMWithDeadlockCheck(JavaThread* thread, Monitor** in_flight_monitor_adr) + : ThreadStateTransition(thread), _in_flight_monitor_adr(in_flight_monitor_adr) { + // Once we are blocked vm expects stack to be walkable + thread->frame_anchor()->make_walkable(thread); + + thread->set_thread_state((JavaThreadState)(_thread_in_vm + 1)); + InterfaceSupport::serialize_thread_state_with_handler(thread); + + SafepointMechanism::callback_if_safepoint(thread); + + thread->set_thread_state(_thread_blocked); + + CHECK_UNHANDLED_OOPS_ONLY(_thread->clear_unhandled_oops();) + } + ~ThreadBlockInVMWithDeadlockCheck() { + // Change to transition state + _thread->set_thread_state((JavaThreadState)(_thread_blocked + 1)); + + InterfaceSupport::serialize_thread_state_with_handler(_thread); + + if (SafepointMechanism::should_block(_thread)) { + release_monitor(); + SafepointMechanism::callback_if_safepoint(_thread); + // The VMThread might have read that we were in a _thread_blocked state + // and proceeded to process a handshake for us. If that's the case then + // we need to block. + // By doing this we are also making the current thread process its own + // handshake if there is one pending and the VMThread didn't try to process + // it yet. This is more of a side-effect and not really necessary; the + // handshake could be processed later on. + if (_thread->has_handshake()) { + _thread->handshake_process_by_self(); + } + } + + _thread->set_thread_state(_thread_in_vm); + CHECK_UNHANDLED_OOPS_ONLY(_thread->clear_unhandled_oops();) + } +}; + // This special transition class is only used to prevent asynchronous exceptions // from being installed on vm exit in situations where we can't tolerate them. diff --git a/src/hotspot/share/runtime/mutex.cpp b/src/hotspot/share/runtime/mutex.cpp index d84ee5d516f..447288bf012 100644 --- a/src/hotspot/share/runtime/mutex.cpp +++ b/src/hotspot/share/runtime/mutex.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,915 +23,81 @@ */ #include "precompiled.hpp" -#include "runtime/atomic.hpp" +#include "logging/log.hpp" #include "runtime/interfaceSupport.inline.hpp" #include "runtime/mutex.hpp" -#include "runtime/orderAccess.hpp" #include "runtime/osThread.hpp" #include "runtime/safepointMechanism.inline.hpp" #include "runtime/thread.inline.hpp" #include "utilities/events.hpp" #include "utilities/macros.hpp" -// o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o -// -// Native Monitor-Mutex locking - theory of operations -// -// * Native Monitors are completely unrelated to Java-level monitors, -// although the "back-end" slow-path implementations share a common lineage. -// See objectMonitor:: in synchronizer.cpp. -// Native Monitors do *not* support nesting or recursion but otherwise -// they're basically Hoare-flavor monitors. -// -// * A thread acquires ownership of a Monitor/Mutex by CASing the LockByte -// in the _LockWord from zero to non-zero. Note that the _Owner field -// is advisory and is used only to verify that the thread calling unlock() -// is indeed the last thread to have acquired the lock. -// -// * Contending threads "push" themselves onto the front of the contention -// queue -- called the cxq -- with CAS and then spin/park. -// The _LockWord contains the LockByte as well as the pointer to the head -// of the cxq. Colocating the LockByte with the cxq precludes certain races. -// -// * Using a separately addressable LockByte allows for CAS:MEMBAR or CAS:0 -// idioms. We currently use MEMBAR in the uncontended unlock() path, as -// MEMBAR often has less latency than CAS. If warranted, we could switch to -// a CAS:0 mode, using timers to close the resultant race, as is done -// with Java Monitors in synchronizer.cpp. -// -// See the following for a discussion of the relative cost of atomics (CAS) -// MEMBAR, and ways to eliminate such instructions from the common-case paths: -// -- http://blogs.sun.com/dave/entry/biased_locking_in_hotspot -// -- http://blogs.sun.com/dave/resource/MustangSync.pdf -// -- http://blogs.sun.com/dave/resource/synchronization-public2.pdf -// -- synchronizer.cpp -// -// * Overall goals - desiderata -// 1. Minimize context switching -// 2. Minimize lock migration -// 3. Minimize CPI -- affinity and locality -// 4. Minimize the execution of high-latency instructions such as CAS or MEMBAR -// 5. Minimize outer lock hold times -// 6. Behave gracefully on a loaded system -// -// * Thread flow and list residency: -// -// Contention queue --> EntryList --> OnDeck --> Owner --> !Owner -// [..resident on monitor list..] -// [...........contending..................] -// -// -- The contention queue (cxq) contains recently-arrived threads (RATs). -// Threads on the cxq eventually drain into the EntryList. -// -- Invariant: a thread appears on at most one list -- cxq, EntryList -// or WaitSet -- at any one time. -// -- For a given monitor there can be at most one "OnDeck" thread at any -// given time but if needbe this particular invariant could be relaxed. -// -// * The WaitSet and EntryList linked lists are composed of ParkEvents. -// I use ParkEvent instead of threads as ParkEvents are immortal and -// type-stable, meaning we can safely unpark() a possibly stale -// list element in the unlock()-path. (That's benign). -// -// * Succession policy - providing for progress: -// -// As necessary, the unlock()ing thread identifies, unlinks, and unparks -// an "heir presumptive" tentative successor thread from the EntryList. -// This becomes the so-called "OnDeck" thread, of which there can be only -// one at any given time for a given monitor. The wakee will recontend -// for ownership of monitor. -// -// Succession is provided for by a policy of competitive handoff. -// The exiting thread does _not_ grant or pass ownership to the -// successor thread. (This is also referred to as "handoff" succession"). -// Instead the exiting thread releases ownership and possibly wakes -// a successor, so the successor can (re)compete for ownership of the lock. -// -// Competitive handoff provides excellent overall throughput at the expense -// of short-term fairness. If fairness is a concern then one remedy might -// be to add an AcquireCounter field to the monitor. After a thread acquires -// the lock it will decrement the AcquireCounter field. When the count -// reaches 0 the thread would reset the AcquireCounter variable, abdicate -// the lock directly to some thread on the EntryList, and then move itself to the -// tail of the EntryList. -// -// But in practice most threads engage or otherwise participate in resource -// bounded producer-consumer relationships, so lock domination is not usually -// a practical concern. Recall too, that in general it's easier to construct -// a fair lock from a fast lock, but not vice-versa. -// -// * The cxq can have multiple concurrent "pushers" but only one concurrent -// detaching thread. This mechanism is immune from the ABA corruption. -// More precisely, the CAS-based "push" onto cxq is ABA-oblivious. -// We use OnDeck as a pseudo-lock to enforce the at-most-one detaching -// thread constraint. -// -// * Taken together, the cxq and the EntryList constitute or form a -// single logical queue of threads stalled trying to acquire the lock. -// We use two distinct lists to reduce heat on the list ends. -// Threads in lock() enqueue onto cxq while threads in unlock() will -// dequeue from the EntryList. (c.f. Michael Scott's "2Q" algorithm). -// A key desideratum is to minimize queue & monitor metadata manipulation -// that occurs while holding the "outer" monitor lock -- that is, we want to -// minimize monitor lock holds times. -// -// The EntryList is ordered by the prevailing queue discipline and -// can be organized in any convenient fashion, such as a doubly-linked list or -// a circular doubly-linked list. If we need a priority queue then something akin -// to Solaris' sleepq would work nicely. Viz., -// -- http://agg.eng/ws/on10_nightly/source/usr/src/uts/common/os/sleepq.c. -// -- http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/os/sleepq.c -// Queue discipline is enforced at ::unlock() time, when the unlocking thread -// drains the cxq into the EntryList, and orders or reorders the threads on the -// EntryList accordingly. -// -// Barring "lock barging", this mechanism provides fair cyclic ordering, -// somewhat similar to an elevator-scan. -// -// * OnDeck -// -- For a given monitor there can be at most one OnDeck thread at any given -// instant. The OnDeck thread is contending for the lock, but has been -// unlinked from the EntryList and cxq by some previous unlock() operations. -// Once a thread has been designated the OnDeck thread it will remain so -// until it manages to acquire the lock -- being OnDeck is a stable property. -// -- Threads on the EntryList or cxq are _not allowed to attempt lock acquisition. -// -- OnDeck also serves as an "inner lock" as follows. Threads in unlock() will, after -// having cleared the LockByte and dropped the outer lock, attempt to "trylock" -// OnDeck by CASing the field from null to non-null. If successful, that thread -// is then responsible for progress and succession and can use CAS to detach and -// drain the cxq into the EntryList. By convention, only this thread, the holder of -// the OnDeck inner lock, can manipulate the EntryList or detach and drain the -// RATs on the cxq into the EntryList. This avoids ABA corruption on the cxq as -// we allow multiple concurrent "push" operations but restrict detach concurrency -// to at most one thread. Having selected and detached a successor, the thread then -// changes the OnDeck to refer to that successor, and then unparks the successor. -// That successor will eventually acquire the lock and clear OnDeck. Beware -// that the OnDeck usage as a lock is asymmetric. A thread in unlock() transiently -// "acquires" OnDeck, performs queue manipulations, passes OnDeck to some successor, -// and then the successor eventually "drops" OnDeck. Note that there's never -// any sense of contention on the inner lock, however. Threads never contend -// or wait for the inner lock. -// -- OnDeck provides for futile wakeup throttling a described in section 3.3 of -// See http://www.usenix.org/events/jvm01/full_papers/dice/dice.pdf -// In a sense, OnDeck subsumes the ObjectMonitor _Succ and ObjectWaiter -// TState fields found in Java-level objectMonitors. (See synchronizer.cpp). -// -// * Waiting threads reside on the WaitSet list -- wait() puts -// the caller onto the WaitSet. Notify() or notifyAll() simply -// transfers threads from the WaitSet to either the EntryList or cxq. -// Subsequent unlock() operations will eventually unpark the notifyee. -// Unparking a notifee in notify() proper is inefficient - if we were to do so -// it's likely the notifyee would simply impale itself on the lock held -// by the notifier. -// -// * The mechanism is obstruction-free in that if the holder of the transient -// OnDeck lock in unlock() is preempted or otherwise stalls, other threads -// can still acquire and release the outer lock and continue to make progress. -// At worst, waking of already blocked contending threads may be delayed, -// but nothing worse. (We only use "trylock" operations on the inner OnDeck -// lock). -// -// * Note that thread-local storage must be initialized before a thread -// uses Native monitors or mutexes. The native monitor-mutex subsystem -// depends on Thread::current(). -// -// * The monitor synchronization subsystem avoids the use of native -// synchronization primitives except for the narrow platform-specific -// park-unpark abstraction. See the comments in os_solaris.cpp regarding -// the semantics of park-unpark. Put another way, this monitor implementation -// depends only on atomic operations and park-unpark. The monitor subsystem -// manages all RUNNING->BLOCKED and BLOCKED->READY transitions while the -// underlying OS manages the READY<->RUN transitions. -// -// * The memory consistency model provide by lock()-unlock() is at least as -// strong or stronger than the Java Memory model defined by JSR-133. -// That is, we guarantee at least entry consistency, if not stronger. -// See http://g.oswego.edu/dl/jmm/cookbook.html. -// -// * Thread:: currently contains a set of purpose-specific ParkEvents: -// _MutexEvent, _ParkEvent, etc. A better approach might be to do away with -// the purpose-specific ParkEvents and instead implement a general per-thread -// stack of available ParkEvents which we could provision on-demand. The -// stack acts as a local cache to avoid excessive calls to ParkEvent::Allocate() -// and ::Release(). A thread would simply pop an element from the local stack before it -// enqueued or park()ed. When the contention was over the thread would -// push the no-longer-needed ParkEvent back onto its stack. -// -// * A slightly reduced form of ILock() and IUnlock() have been partially -// model-checked (Murphi) for safety and progress at T=1,2,3 and 4. -// It'd be interesting to see if TLA/TLC could be useful as well. -// -// * Mutex-Monitor is a low-level "leaf" subsystem. That is, the monitor -// code should never call other code in the JVM that might itself need to -// acquire monitors or mutexes. That's true *except* in the case of the -// ThreadBlockInVM state transition wrappers. The ThreadBlockInVM DTOR handles -// mutator reentry (ingress) by checking for a pending safepoint in which case it will -// call SafepointSynchronize::block(), which in turn may call Safepoint_lock->lock(), etc. -// In that particular case a call to lock() for a given Monitor can end up recursively -// calling lock() on another monitor. While distasteful, this is largely benign -// as the calls come from jacket that wraps lock(), and not from deep within lock() itself. -// -// It's unfortunate that native mutexes and thread state transitions were convolved. -// They're really separate concerns and should have remained that way. Melding -// them together was facile -- a bit too facile. The current implementation badly -// conflates the two concerns. -// -// * TODO-FIXME: -// -// -- Add DTRACE probes for contended acquire, contended acquired, contended unlock -// We should also add DTRACE probes in the ParkEvent subsystem for -// Park-entry, Park-exit, and Unpark. -// -// -- We have an excess of mutex-like constructs in the JVM, namely: -// 1. objectMonitors for Java-level synchronization (synchronizer.cpp) -// 2. low-level muxAcquire and muxRelease -// 3. low-level spinAcquire and spinRelease -// 4. native Mutex:: and Monitor:: -// 5. jvm_raw_lock() and _unlock() -// 6. JVMTI raw monitors -- distinct from (5) despite having a confusingly -// similar name. -// -// o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o -#define UNS(x) (uintptr_t(x)) -#define TRACE(m) \ - { \ - static volatile int ctr = 0; \ - int x = ++ctr; \ - if ((x & (x - 1)) == 0) { \ - ::printf("%d:%s\n", x, #m); \ - ::fflush(stdout); \ - } \ - } - -const intptr_t _LBIT = 1; - -// Endian-ness ... index of least-significant byte in SplitWord.Bytes[] -#ifdef VM_LITTLE_ENDIAN - #define _LSBINDEX 0 -#else - #define _LSBINDEX (sizeof(intptr_t)-1) -#endif - -// Simplistic low-quality Marsaglia SHIFT-XOR RNG. -// Bijective except for the trailing mask operation. -// Useful for spin loops as the compiler can't optimize it away. - -static inline jint MarsagliaXORV(jint x) { - if (x == 0) x = 1|os::random(); - x ^= x << 6; - x ^= ((unsigned)x) >> 21; - x ^= x << 7; - return x & 0x7FFFFFFF; -} - -static int Stall(int its) { - static volatile jint rv = 1; - volatile int OnFrame = 0; - jint v = rv ^ UNS(OnFrame); - while (--its >= 0) { - v = MarsagliaXORV(v); - } - // Make this impossible for the compiler to optimize away, - // but (mostly) avoid W coherency sharing on MP systems. - if (v == 0x12345) rv = v; - return v; -} - -int Monitor::TryLock() { - intptr_t v = _LockWord.FullWord; - for (;;) { - if ((v & _LBIT) != 0) return 0; - const intptr_t u = Atomic::cmpxchg(v|_LBIT, &_LockWord.FullWord, v); - if (v == u) return 1; - v = u; - } -} - -int Monitor::TryFast() { - // Optimistic fast-path form ... - // Fast-path attempt for the common uncontended case. - // Avoid RTS->RTO $ coherence upgrade on typical SMP systems. - intptr_t v = Atomic::cmpxchg(_LBIT, &_LockWord.FullWord, (intptr_t)0); // agro ... - if (v == 0) return 1; - - for (;;) { - if ((v & _LBIT) != 0) return 0; - const intptr_t u = Atomic::cmpxchg(v|_LBIT, &_LockWord.FullWord, v); - if (v == u) return 1; - v = u; - } -} - -int Monitor::ILocked() { - const intptr_t w = _LockWord.FullWord & 0xFF; - assert(w == 0 || w == _LBIT, "invariant"); - return w == _LBIT; -} - -// Polite TATAS spinlock with exponential backoff - bounded spin. -// Ideally we'd use processor cycles, time or vtime to control -// the loop, but we currently use iterations. -// All the constants within were derived empirically but work over -// over the spectrum of J2SE reference platforms. -// On Niagara-class systems the back-off is unnecessary but -// is relatively harmless. (At worst it'll slightly retard -// acquisition times). The back-off is critical for older SMP systems -// where constant fetching of the LockWord would otherwise impair -// scalability. -// -// Clamp spinning at approximately 1/2 of a context-switch round-trip. -// See synchronizer.cpp for details and rationale. - -int Monitor::TrySpin(Thread * const Self) { - if (TryLock()) return 1; - if (!os::is_MP()) return 0; - - int Probes = 0; - int Delay = 0; - int SpinMax = 20; - for (;;) { - intptr_t v = _LockWord.FullWord; - if ((v & _LBIT) == 0) { - if (Atomic::cmpxchg (v|_LBIT, &_LockWord.FullWord, v) == v) { - return 1; - } - continue; - } - - SpinPause(); - - // Periodically increase Delay -- variable Delay form - // conceptually: delay *= 1 + 1/Exponent - ++Probes; - if (Probes > SpinMax) return 0; - - if ((Probes & 0x7) == 0) { - Delay = ((Delay << 1)|1) & 0x7FF; - // CONSIDER: Delay += 1 + (Delay/4); Delay &= 0x7FF ; - } - - // Stall for "Delay" time units - iterations in the current implementation. - // Avoid generating coherency traffic while stalled. - // Possible ways to delay: - // PAUSE, SLEEP, MEMBAR #sync, MEMBAR #halt, - // wr %g0,%asi, gethrtime, rdstick, rdtick, rdtsc, etc. ... - // Note that on Niagara-class systems we want to minimize STs in the - // spin loop. N1 and brethren write-around the L1$ over the xbar into the L2$. - // Furthermore, they don't have a W$ like traditional SPARC processors. - // We currently use a Marsaglia Shift-Xor RNG loop. - if (Self != NULL) { - jint rv = Self->rng[0]; - for (int k = Delay; --k >= 0;) { - rv = MarsagliaXORV(rv); - if (SafepointMechanism::should_block(Self)) return 0; - } - Self->rng[0] = rv; - } else { - Stall(Delay); - } - } -} - -static int ParkCommon(ParkEvent * ev, jlong timo) { - // Diagnostic support - periodically unwedge blocked threads - int err = OS_OK; - if (0 == timo) { - ev->park(); - } else { - err = ev->park(timo); - } - return err; -} - -inline int Monitor::AcquireOrPush(ParkEvent * ESelf) { - intptr_t v = _LockWord.FullWord; - for (;;) { - if ((v & _LBIT) == 0) { - const intptr_t u = Atomic::cmpxchg(v|_LBIT, &_LockWord.FullWord, v); - if (u == v) return 1; // indicate acquired - v = u; - } else { - // Anticipate success ... - ESelf->ListNext = (ParkEvent *)(v & ~_LBIT); - const intptr_t u = Atomic::cmpxchg(intptr_t(ESelf)|_LBIT, &_LockWord.FullWord, v); - if (u == v) return 0; // indicate pushed onto cxq - v = u; - } - // Interference - LockWord change - just retry - } -} - -// ILock and IWait are the lowest level primitive internal blocking -// synchronization functions. The callers of IWait and ILock must have -// performed any needed state transitions beforehand. -// IWait and ILock may directly call park() without any concern for thread state. -// Note that ILock and IWait do *not* access _owner. -// _owner is a higher-level logical concept. - -void Monitor::ILock(Thread * Self) { - assert(_OnDeck != Self->_MutexEvent, "invariant"); - - if (TryFast()) { - Exeunt: - assert(ILocked(), "invariant"); - return; - } - - ParkEvent * const ESelf = Self->_MutexEvent; - assert(_OnDeck != ESelf, "invariant"); - - // As an optimization, spinners could conditionally try to set _OnDeck to _LBIT - // Synchronizer.cpp uses a similar optimization. - if (TrySpin(Self)) goto Exeunt; - - // Slow-path - the lock is contended. - // Either Enqueue Self on cxq or acquire the outer lock. - // LockWord encoding = (cxq,LOCKBYTE) - ESelf->reset(); - OrderAccess::fence(); - - if (AcquireOrPush(ESelf)) goto Exeunt; - - // At any given time there is at most one ondeck thread. - // ondeck implies not resident on cxq and not resident on EntryList - // Only the OnDeck thread can try to acquire -- contend for -- the lock. - // CONSIDER: use Self->OnDeck instead of m->OnDeck. - // Deschedule Self so that others may run. - while (OrderAccess::load_acquire(&_OnDeck) != ESelf) { - ParkCommon(ESelf, 0); - } - - // Self is now in the OnDeck position and will remain so until it - // manages to acquire the lock. - for (;;) { - assert(_OnDeck == ESelf, "invariant"); - if (TrySpin(Self)) break; - // It's probably wise to spin only if we *actually* blocked - // CONSIDER: check the lockbyte, if it remains set then - // preemptively drain the cxq into the EntryList. - // The best place and time to perform queue operations -- lock metadata -- - // is _before having acquired the outer lock, while waiting for the lock to drop. - ParkCommon(ESelf, 0); - } - - assert(_OnDeck == ESelf, "invariant"); - _OnDeck = NULL; - - // Note that we current drop the inner lock (clear OnDeck) in the slow-path - // epilogue immediately after having acquired the outer lock. - // But instead we could consider the following optimizations: - // A. Shift or defer dropping the inner lock until the subsequent IUnlock() operation. - // This might avoid potential reacquisition of the inner lock in IUlock(). - // B. While still holding the inner lock, attempt to opportunistically select - // and unlink the next OnDeck thread from the EntryList. - // If successful, set OnDeck to refer to that thread, otherwise clear OnDeck. - // It's critical that the select-and-unlink operation run in constant-time as - // it executes when holding the outer lock and may artificially increase the - // effective length of the critical section. - // Note that (A) and (B) are tantamount to succession by direct handoff for - // the inner lock. - goto Exeunt; -} - -void Monitor::IUnlock(bool RelaxAssert) { - assert(ILocked(), "invariant"); - // Conceptually we need a MEMBAR #storestore|#loadstore barrier or fence immediately - // before the store that releases the lock. Crucially, all the stores and loads in the - // critical section must be globally visible before the store of 0 into the lock-word - // that releases the lock becomes globally visible. That is, memory accesses in the - // critical section should not be allowed to bypass or overtake the following ST that - // releases the lock. As such, to prevent accesses within the critical section - // from "leaking" out, we need a release fence between the critical section and the - // store that releases the lock. In practice that release barrier is elided on - // platforms with strong memory models such as TSO. - // - // Note that the OrderAccess::storeload() fence that appears after unlock store - // provides for progress conditions and succession and is _not related to exclusion - // safety or lock release consistency. - OrderAccess::release_store(&_LockWord.Bytes[_LSBINDEX], jbyte(0)); // drop outer lock - - OrderAccess::storeload(); - ParkEvent * const w = _OnDeck; // raw load as we will just return if non-NULL - assert(RelaxAssert || w != Thread::current()->_MutexEvent, "invariant"); - if (w != NULL) { - // Either we have a valid ondeck thread or ondeck is transiently "locked" - // by some exiting thread as it arranges for succession. The LSBit of - // OnDeck allows us to discriminate two cases. If the latter, the - // responsibility for progress and succession lies with that other thread. - // For good performance, we also depend on the fact that redundant unpark() - // operations are cheap. That is, repeated Unpark()ing of the OnDeck thread - // is inexpensive. This approach provides implicit futile wakeup throttling. - // Note that the referent "w" might be stale with respect to the lock. - // In that case the following unpark() is harmless and the worst that'll happen - // is a spurious return from a park() operation. Critically, if "w" _is stale, - // then progress is known to have occurred as that means the thread associated - // with "w" acquired the lock. In that case this thread need take no further - // action to guarantee progress. - if ((UNS(w) & _LBIT) == 0) w->unpark(); - return; - } - - intptr_t cxq = _LockWord.FullWord; - if (((cxq & ~_LBIT)|UNS(_EntryList)) == 0) { - return; // normal fast-path exit - cxq and EntryList both empty - } - if (cxq & _LBIT) { - // Optional optimization ... - // Some other thread acquired the lock in the window since this - // thread released it. Succession is now that thread's responsibility. - return; - } - - Succession: - // Slow-path exit - this thread must ensure succession and progress. - // OnDeck serves as lock to protect cxq and EntryList. - // Only the holder of OnDeck can manipulate EntryList or detach the RATs from cxq. - // Avoid ABA - allow multiple concurrent producers (enqueue via push-CAS) - // but only one concurrent consumer (detacher of RATs). - // Unlike a normal lock, however, the exiting thread "locks" OnDeck, - // picks a successor and marks that thread as OnDeck. That successor - // thread will then clear OnDeck once it eventually acquires the outer lock. - if (!Atomic::replace_if_null((ParkEvent*)_LBIT, &_OnDeck)) { - return; - } - - ParkEvent * List = _EntryList; - if (List != NULL) { - // Transfer the head of the EntryList to the OnDeck position. - // Once OnDeck, a thread stays OnDeck until it acquires the lock. - // For a given lock there is at most OnDeck thread at any one instant. - WakeOne: - assert(List == _EntryList, "invariant"); - ParkEvent * const w = List; - assert(RelaxAssert || w != Thread::current()->_MutexEvent, "invariant"); - _EntryList = w->ListNext; - // as a diagnostic measure consider setting w->_ListNext = BAD - assert(intptr_t(_OnDeck) == _LBIT, "invariant"); - - // Pass OnDeck role to w, ensuring that _EntryList has been set first. - // w will clear _OnDeck once it acquires the outer lock. - // Note that once we set _OnDeck that thread can acquire the mutex, proceed - // with its critical section and then enter this code to unlock the mutex. So - // you can have multiple threads active in IUnlock at the same time. - OrderAccess::release_store(&_OnDeck, w); - - // Another optional optimization ... - // For heavily contended locks it's not uncommon that some other - // thread acquired the lock while this thread was arranging succession. - // Try to defer the unpark() operation - Delegate the responsibility - // for unpark()ing the OnDeck thread to the current or subsequent owners - // That is, the new owner is responsible for unparking the OnDeck thread. - OrderAccess::storeload(); - cxq = _LockWord.FullWord; - if (cxq & _LBIT) return; - - w->unpark(); - return; - } - - cxq = _LockWord.FullWord; - if ((cxq & ~_LBIT) != 0) { - // The EntryList is empty but the cxq is populated. - // drain RATs from cxq into EntryList - // Detach RATs segment with CAS and then merge into EntryList - for (;;) { - // optional optimization - if locked, the owner is responsible for succession - if (cxq & _LBIT) goto Punt; - const intptr_t vfy = Atomic::cmpxchg(cxq & _LBIT, &_LockWord.FullWord, cxq); - if (vfy == cxq) break; - cxq = vfy; - // Interference - LockWord changed - Just retry - // We can see concurrent interference from contending threads - // pushing themselves onto the cxq or from lock-unlock operations. - // From the perspective of this thread, EntryList is stable and - // the cxq is prepend-only -- the head is volatile but the interior - // of the cxq is stable. In theory if we encounter interference from threads - // pushing onto cxq we could simply break off the original cxq suffix and - // move that segment to the EntryList, avoiding a 2nd or multiple CAS attempts - // on the high-traffic LockWord variable. For instance lets say the cxq is "ABCD" - // when we first fetch cxq above. Between the fetch -- where we observed "A" - // -- and CAS -- where we attempt to CAS null over A -- "PQR" arrive, - // yielding cxq = "PQRABCD". In this case we could simply set A.ListNext - // null, leaving cxq = "PQRA" and transfer the "BCD" segment to the EntryList. - // Note too, that it's safe for this thread to traverse the cxq - // without taking any special concurrency precautions. - } - - // We don't currently reorder the cxq segment as we move it onto - // the EntryList, but it might make sense to reverse the order - // or perhaps sort by thread priority. See the comments in - // synchronizer.cpp objectMonitor::exit(). - assert(_EntryList == NULL, "invariant"); - _EntryList = List = (ParkEvent *)(cxq & ~_LBIT); - assert(List != NULL, "invariant"); - goto WakeOne; - } - - // cxq|EntryList is empty. - // w == NULL implies that cxq|EntryList == NULL in the past. - // Possible race - rare inopportune interleaving. - // A thread could have added itself to cxq since this thread previously checked. - // Detect and recover by refetching cxq. - Punt: - assert(intptr_t(_OnDeck) == _LBIT, "invariant"); - _OnDeck = NULL; // Release inner lock. - OrderAccess::storeload(); // Dekker duality - pivot point - - // Resample LockWord/cxq to recover from possible race. - // For instance, while this thread T1 held OnDeck, some other thread T2 might - // acquire the outer lock. Another thread T3 might try to acquire the outer - // lock, but encounter contention and enqueue itself on cxq. T2 then drops the - // outer lock, but skips succession as this thread T1 still holds OnDeck. - // T1 is and remains responsible for ensuring succession of T3. - // - // Note that we don't need to recheck EntryList, just cxq. - // If threads moved onto EntryList since we dropped OnDeck - // that implies some other thread forced succession. - cxq = _LockWord.FullWord; - if ((cxq & ~_LBIT) != 0 && (cxq & _LBIT) == 0) { - goto Succession; // potential race -- re-run succession - } - return; -} - -bool Monitor::notify() { - assert(_owner == Thread::current(), "invariant"); - assert(ILocked(), "invariant"); - if (_WaitSet == NULL) return true; - - // Transfer one thread from the WaitSet to the EntryList or cxq. - // Currently we just unlink the head of the WaitSet and prepend to the cxq. - // And of course we could just unlink it and unpark it, too, but - // in that case it'd likely impale itself on the reentry. - Thread::muxAcquire(_WaitLock, "notify:WaitLock"); - ParkEvent * nfy = _WaitSet; - if (nfy != NULL) { // DCL idiom - _WaitSet = nfy->ListNext; - assert(nfy->Notified == 0, "invariant"); - // push nfy onto the cxq - for (;;) { - const intptr_t v = _LockWord.FullWord; - assert((v & 0xFF) == _LBIT, "invariant"); - nfy->ListNext = (ParkEvent *)(v & ~_LBIT); - if (Atomic::cmpxchg(intptr_t(nfy)|_LBIT, &_LockWord.FullWord, v) == v) break; - // interference - _LockWord changed -- just retry - } - // Note that setting Notified before pushing nfy onto the cxq is - // also legal and safe, but the safety properties are much more - // subtle, so for the sake of code stewardship ... - OrderAccess::fence(); - nfy->Notified = 1; - } - Thread::muxRelease(_WaitLock); - assert(ILocked(), "invariant"); - return true; -} - -// Currently notifyAll() transfers the waiters one-at-a-time from the waitset -// to the cxq. This could be done more efficiently with a single bulk en-mass transfer, -// but in practice notifyAll() for large #s of threads is rare and not time-critical. -// Beware too, that we invert the order of the waiters. Lets say that the -// waitset is "ABCD" and the cxq is "XYZ". After a notifyAll() the waitset -// will be empty and the cxq will be "DCBAXYZ". This is benign, of course. - -bool Monitor::notify_all() { - assert(_owner == Thread::current(), "invariant"); - assert(ILocked(), "invariant"); - while (_WaitSet != NULL) notify(); - return true; -} - -int Monitor::IWait(Thread * Self, jlong timo) { - assert(ILocked(), "invariant"); - - // Phases: - // 1. Enqueue Self on WaitSet - currently prepend - // 2. unlock - drop the outer lock - // 3. wait for either notification or timeout - // 4. lock - reentry - reacquire the outer lock - - ParkEvent * const ESelf = Self->_MutexEvent; - ESelf->Notified = 0; - ESelf->reset(); - OrderAccess::fence(); - - // Add Self to WaitSet - // Ideally only the holder of the outer lock would manipulate the WaitSet - - // That is, the outer lock would implicitly protect the WaitSet. - // But if a thread in wait() encounters a timeout it will need to dequeue itself - // from the WaitSet _before it becomes the owner of the lock. We need to dequeue - // as the ParkEvent -- which serves as a proxy for the thread -- can't reside - // on both the WaitSet and the EntryList|cxq at the same time.. That is, a thread - // on the WaitSet can't be allowed to compete for the lock until it has managed to - // unlink its ParkEvent from WaitSet. Thus the need for WaitLock. - // Contention on the WaitLock is minimal. - // - // Another viable approach would be add another ParkEvent, "WaitEvent" to the - // thread class. The WaitSet would be composed of WaitEvents. Only the - // owner of the outer lock would manipulate the WaitSet. A thread in wait() - // could then compete for the outer lock, and then, if necessary, unlink itself - // from the WaitSet only after having acquired the outer lock. More precisely, - // there would be no WaitLock. A thread in in wait() would enqueue its WaitEvent - // on the WaitSet; release the outer lock; wait for either notification or timeout; - // reacquire the inner lock; and then, if needed, unlink itself from the WaitSet. - // - // Alternatively, a 2nd set of list link fields in the ParkEvent might suffice. - // One set would be for the WaitSet and one for the EntryList. - // We could also deconstruct the ParkEvent into a "pure" event and add a - // new immortal/TSM "ListElement" class that referred to ParkEvents. - // In that case we could have one ListElement on the WaitSet and another - // on the EntryList, with both referring to the same pure Event. - - Thread::muxAcquire(_WaitLock, "wait:WaitLock:Add"); - ESelf->ListNext = _WaitSet; - _WaitSet = ESelf; - Thread::muxRelease(_WaitLock); - - // Release the outer lock - // We call IUnlock (RelaxAssert=true) as a thread T1 might - // enqueue itself on the WaitSet, call IUnlock(), drop the lock, - // and then stall before it can attempt to wake a successor. - // Some other thread T2 acquires the lock, and calls notify(), moving - // T1 from the WaitSet to the cxq. T2 then drops the lock. T1 resumes, - // and then finds *itself* on the cxq. During the course of a normal - // IUnlock() call a thread should _never find itself on the EntryList - // or cxq, but in the case of wait() it's possible. - // See synchronizer.cpp objectMonitor::wait(). - IUnlock(true); - - // Wait for either notification or timeout - // Beware that in some circumstances we might propagate - // spurious wakeups back to the caller. - - for (;;) { - if (ESelf->Notified) break; - int err = ParkCommon(ESelf, timo); - if (err == OS_TIMEOUT) break; - } - - // Prepare for reentry - if necessary, remove ESelf from WaitSet - // ESelf can be: - // 1. Still on the WaitSet. This can happen if we exited the loop by timeout. - // 2. On the cxq or EntryList - // 3. Not resident on cxq, EntryList or WaitSet, but in the OnDeck position. - - OrderAccess::fence(); - int WasOnWaitSet = 0; - if (ESelf->Notified == 0) { - Thread::muxAcquire(_WaitLock, "wait:WaitLock:remove"); - if (ESelf->Notified == 0) { // DCL idiom - assert(_OnDeck != ESelf, "invariant"); // can't be both OnDeck and on WaitSet - // ESelf is resident on the WaitSet -- unlink it. - // A doubly-linked list would be better here so we can unlink in constant-time. - // We have to unlink before we potentially recontend as ESelf might otherwise - // end up on the cxq|EntryList -- it can't be on two lists at once. - ParkEvent * p = _WaitSet; - ParkEvent * q = NULL; // classic q chases p - while (p != NULL && p != ESelf) { - q = p; - p = p->ListNext; - } - assert(p == ESelf, "invariant"); - if (p == _WaitSet) { // found at head - assert(q == NULL, "invariant"); - _WaitSet = p->ListNext; - } else { // found in interior - assert(q->ListNext == p, "invariant"); - q->ListNext = p->ListNext; - } - WasOnWaitSet = 1; // We were *not* notified but instead encountered timeout - } - Thread::muxRelease(_WaitLock); - } - - // Reentry phase - reacquire the lock - if (WasOnWaitSet) { - // ESelf was previously on the WaitSet but we just unlinked it above - // because of a timeout. ESelf is not resident on any list and is not OnDeck - assert(_OnDeck != ESelf, "invariant"); - ILock(Self); - } else { - // A prior notify() operation moved ESelf from the WaitSet to the cxq. - // ESelf is now on the cxq, EntryList or at the OnDeck position. - // The following fragment is extracted from Monitor::ILock() - for (;;) { - if (OrderAccess::load_acquire(&_OnDeck) == ESelf && TrySpin(Self)) break; - ParkCommon(ESelf, 0); - } - assert(_OnDeck == ESelf, "invariant"); - _OnDeck = NULL; - } - - assert(ILocked(), "invariant"); - return WasOnWaitSet != 0; // return true IFF timeout -} - - -// ON THE VMTHREAD SNEAKING PAST HELD LOCKS: -// In particular, there are certain types of global lock that may be held -// by a Java thread while it is blocked at a safepoint but before it has -// written the _owner field. These locks may be sneakily acquired by the -// VM thread during a safepoint to avoid deadlocks. Alternatively, one should -// identify all such locks, and ensure that Java threads never block at -// safepoints while holding them (_no_safepoint_check_flag). While it -// seems as though this could increase the time to reach a safepoint -// (or at least increase the mean, if not the variance), the latter -// approach might make for a cleaner, more maintainable JVM design. -// -// Sneaking is vile and reprehensible and should be excised at the 1st -// opportunity. It's possible that the need for sneaking could be obviated -// as follows. Currently, a thread might (a) while TBIVM, call pthread_mutex_lock -// or ILock() thus acquiring the "physical" lock underlying Monitor/Mutex. -// (b) stall at the TBIVM exit point as a safepoint is in effect. Critically, -// it'll stall at the TBIVM reentry state transition after having acquired the -// underlying lock, but before having set _owner and having entered the actual -// critical section. The lock-sneaking facility leverages that fact and allowed the -// VM thread to logically acquire locks that had already be physically locked by mutators -// but where mutators were known blocked by the reentry thread state transition. -// -// If we were to modify the Monitor-Mutex so that TBIVM state transitions tightly -// wrapped calls to park(), then we could likely do away with sneaking. We'd -// decouple lock acquisition and parking. The critical invariant to eliminating -// sneaking is to ensure that we never "physically" acquire the lock while TBIVM. -// An easy way to accomplish this is to wrap the park calls in a narrow TBIVM jacket. -// One difficulty with this approach is that the TBIVM wrapper could recurse and -// call lock() deep from within a lock() call, while the MutexEvent was already enqueued. -// Using a stack (N=2 at minimum) of ParkEvents would take care of that problem. -// -// But of course the proper ultimate approach is to avoid schemes that require explicit -// sneaking or dependence on any any clever invariants or subtle implementation properties -// of Mutex-Monitor and instead directly address the underlying design flaw. - -void Monitor::lock(Thread * Self) { +void Monitor::lock(Thread * self) { // Ensure that the Monitor requires/allows safepoint checks. assert(_safepoint_check_required != Monitor::_safepoint_check_never, "This lock should never have a safepoint check: %s", name()); #ifdef CHECK_UNHANDLED_OOPS - // Clear unhandled oops so we get a crash right away. Only clear for non-vm - // or GC threads. - if (Self->is_Java_thread()) { - Self->clear_unhandled_oops(); + // Clear unhandled oops in JavaThreads so we get a crash right away. + if (self->is_Java_thread()) { + self->clear_unhandled_oops(); } #endif // CHECK_UNHANDLED_OOPS - DEBUG_ONLY(check_prelock_state(Self, StrictSafepointChecks);) - assert(_owner != Self, "invariant"); - assert(_OnDeck != Self->_MutexEvent, "invariant"); + DEBUG_ONLY(check_prelock_state(self, StrictSafepointChecks)); + assert(_owner != self, "invariant"); - if (TryFast()) { - Exeunt: - assert(ILocked(), "invariant"); - assert(owner() == NULL, "invariant"); - set_owner(Self); - return; + Monitor* in_flight_monitor = NULL; + DEBUG_ONLY(int retry_cnt = 0;) + while (!_lock.try_lock()) { + // The lock is contended + + #ifdef ASSERT + check_block_state(self); + if (retry_cnt++ > 3) { + log_trace(vmmonitor)("JavaThread " INTPTR_FORMAT " on %d attempt trying to acquire vmmonitor %s", p2i(self), retry_cnt, _name); + } + #endif // ASSERT + + if (self->is_Java_thread()) { + assert(rank() > Mutex::special, "Potential deadlock with special or lesser rank mutex"); + { ThreadBlockInVMWithDeadlockCheck tbivmdc((JavaThread *) self, &in_flight_monitor); + in_flight_monitor = this; // save for ~ThreadBlockInVMWithDeadlockCheck + _lock.lock(); + } + if (in_flight_monitor != NULL) { + // Not unlocked by ~ThreadBlockInVMWithDeadlockCheck + break; + } + } else { + _lock.lock(); + break; + } } - // The lock is contended ... - - bool can_sneak = Self->is_VM_thread() && SafepointSynchronize::is_at_safepoint(); - if (can_sneak && _owner == NULL) { - // a java thread has locked the lock but has not entered the - // critical region -- let's just pretend we've locked the lock - // and go on. we note this with _snuck so we can also - // pretend to unlock when the time comes. - _snuck = true; - goto Exeunt; - } - - // Try a brief spin to avoid passing thru thread state transition ... - if (TrySpin(Self)) goto Exeunt; - - DEBUG_ONLY(check_block_state(Self);) - if (Self->is_Java_thread()) { - // Horrible dictu - we suffer through a state transition - assert(rank() > Mutex::special, "Potential deadlock with special or lesser rank mutex"); - ThreadBlockInVM tbivm((JavaThread *) Self); - ILock(Self); - } else { - // Mirabile dictu - ILock(Self); - } - goto Exeunt; + assert_owner(NULL); + set_owner(self); } void Monitor::lock() { this->lock(Thread::current()); } -// Lock without safepoint check - a degenerate variant of lock(). -// Should ONLY be used by safepoint code and other code -// that is guaranteed not to block while running inside the VM. If this is called with -// thread state set to be in VM, the safepoint synchronization code will deadlock! +// Lock without safepoint check - a degenerate variant of lock() for use by +// JavaThreads when it is known to be safe to not check for a safepoint when +// acquiring this lock. If the thread blocks acquiring the lock it is not +// safepoint-safe and so will prevent a safepoint from being reached. If used +// in the wrong way this can lead to a deadlock with the safepoint code. -void Monitor::lock_without_safepoint_check(Thread * Self) { - // Ensure that the Monitor does not require or allow safepoint checks. +void Monitor::lock_without_safepoint_check(Thread * self) { + // Ensure that the Monitor does not require safepoint checks. assert(_safepoint_check_required != Monitor::_safepoint_check_always, "This lock should always have a safepoint check: %s", name()); - assert(_owner != Self, "invariant"); - ILock(Self); - assert(_owner == NULL, "invariant"); - set_owner(Self); + assert(_owner != self, "invariant"); + _lock.lock(); + assert_owner(NULL); + set_owner(self); } void Monitor::lock_without_safepoint_check() { @@ -942,117 +108,36 @@ void Monitor::lock_without_safepoint_check() { // Returns true if thread succeeds in grabbing the lock, otherwise false. bool Monitor::try_lock() { - Thread * const Self = Thread::current(); - DEBUG_ONLY(check_prelock_state(Self, false);) - // assert(!thread->is_inside_signal_handler(), "don't lock inside signal handler"); + Thread * const self = Thread::current(); + DEBUG_ONLY(check_prelock_state(self, false);) - // Special case, where all Java threads are stopped. - // The lock may have been acquired but _owner is not yet set. - // In that case the VM thread can safely grab the lock. - // It strikes me this should appear _after the TryLock() fails, below. - bool can_sneak = Self->is_VM_thread() && SafepointSynchronize::is_at_safepoint(); - if (can_sneak && _owner == NULL) { - set_owner(Self); // Do not need to be atomic, since we are at a safepoint - _snuck = true; - return true; - } - - if (TryLock()) { - // We got the lock - assert(_owner == NULL, "invariant"); - set_owner(Self); + if (_lock.try_lock()) { + assert_owner(NULL); + set_owner(self); return true; } return false; } +void Monitor::release_for_safepoint() { + assert_owner(NULL); + _lock.unlock(); +} + void Monitor::unlock() { - assert(_owner == Thread::current(), "invariant"); - assert(_OnDeck != Thread::current()->_MutexEvent, "invariant"); + assert_owner(Thread::current()); set_owner(NULL); - if (_snuck) { - assert(SafepointSynchronize::is_at_safepoint() && Thread::current()->is_VM_thread(), "sneak"); - _snuck = false; - return; - } - IUnlock(false); + _lock.unlock(); } -// Yet another degenerate version of Monitor::lock() or lock_without_safepoint_check() -// jvm_raw_lock() and _unlock() can be called by non-Java threads via JVM_RawMonitorEnter. -// -// There's no expectation that JVM_RawMonitors will interoperate properly with the native -// Mutex-Monitor constructs. We happen to implement JVM_RawMonitors in terms of -// native Mutex-Monitors simply as a matter of convenience. A simple abstraction layer -// over a pthread_mutex_t would work equally as well, but require more platform-specific -// code -- a "PlatformMutex". Alternatively, a simply layer over muxAcquire-muxRelease -// would work too. -// -// Since the caller might be a foreign thread, we don't necessarily have a Thread.MutexEvent -// instance available. Instead, we transiently allocate a ParkEvent on-demand if -// we encounter contention. That ParkEvent remains associated with the thread -// until it manages to acquire the lock, at which time we return the ParkEvent -// to the global ParkEvent free list. This is correct and suffices for our purposes. -// -// Beware that the original jvm_raw_unlock() had a "_snuck" test but that -// jvm_raw_lock() didn't have the corresponding test. I suspect that's an -// oversight, but I've replicated the original suspect logic in the new code ... - -void Monitor::jvm_raw_lock() { - assert(rank() == native, "invariant"); - - if (TryLock()) { - Exeunt: - assert(ILocked(), "invariant"); - assert(_owner == NULL, "invariant"); - // This can potentially be called by non-java Threads. Thus, the Thread::current_or_null() - // might return NULL. Don't call set_owner since it will break on an NULL owner - // Consider installing a non-null "ANON" distinguished value instead of just NULL. - _owner = Thread::current_or_null(); - return; - } - - if (TrySpin(NULL)) goto Exeunt; - - // slow-path - apparent contention - // Allocate a ParkEvent for transient use. - // The ParkEvent remains associated with this thread until - // the time the thread manages to acquire the lock. - ParkEvent * const ESelf = ParkEvent::Allocate(NULL); - ESelf->reset(); - OrderAccess::storeload(); - - // Either Enqueue Self on cxq or acquire the outer lock. - if (AcquireOrPush (ESelf)) { - ParkEvent::Release(ESelf); // surrender the ParkEvent - goto Exeunt; - } - - // At any given time there is at most one ondeck thread. - // ondeck implies not resident on cxq and not resident on EntryList - // Only the OnDeck thread can try to acquire -- contend for -- the lock. - // CONSIDER: use Self->OnDeck instead of m->OnDeck. - for (;;) { - if (OrderAccess::load_acquire(&_OnDeck) == ESelf && TrySpin(NULL)) break; - ParkCommon(ESelf, 0); - } - - assert(_OnDeck == ESelf, "invariant"); - _OnDeck = NULL; - ParkEvent::Release(ESelf); // surrender the ParkEvent - goto Exeunt; +void Monitor::notify() { + assert_owner(Thread::current()); + _lock.notify(); } -void Monitor::jvm_raw_unlock() { - // Nearly the same as Monitor::unlock() ... - // directly set _owner instead of using set_owner(null) - _owner = NULL; - if (_snuck) { // ??? - assert(SafepointSynchronize::is_at_safepoint() && Thread::current()->is_VM_thread(), "sneak"); - _snuck = false; - return; - } - IUnlock(false); +void Monitor::notify_all() { + assert_owner(Thread::current()); + _lock.notify_all(); } bool Monitor::wait(bool no_safepoint_check, long timeout, @@ -1063,22 +148,24 @@ bool Monitor::wait(bool no_safepoint_check, long timeout, assert(!(_safepoint_check_required == Monitor::_safepoint_check_always && no_safepoint_check == true), "This lock should always have a safepoint check: %s", name()); - Thread * const Self = Thread::current(); - assert(_owner == Self, "invariant"); - assert(ILocked(), "invariant"); + // timeout is in milliseconds - with zero meaning never timeout + assert(timeout >= 0, "negative timeout"); + + Thread * const self = Thread::current(); + assert_owner(self); // as_suspend_equivalent logically implies !no_safepoint_check guarantee(!as_suspend_equivalent || !no_safepoint_check, "invariant"); // !no_safepoint_check logically implies java_thread - guarantee(no_safepoint_check || Self->is_Java_thread(), "invariant"); + guarantee(no_safepoint_check || self->is_Java_thread(), "invariant"); #ifdef ASSERT - Monitor * least = get_least_ranked_lock_besides_this(Self->owned_locks()); + Monitor * least = get_least_ranked_lock_besides_this(self->owned_locks()); assert(least != this, "Specification of get_least_... call above"); if (least != NULL && least->rank() <= special) { ::tty->print("Attempting to wait on monitor %s/%d while holding" - " lock %s/%d -- possible deadlock", - name(), rank(), least->name(), least->rank()); + " lock %s/%d -- possible deadlock", + name(), rank(), least->name(), least->rank()); assert(false, "Shouldn't block(wait) while holding a lock of rank special"); } #endif // ASSERT @@ -1088,75 +175,79 @@ bool Monitor::wait(bool no_safepoint_check, long timeout, // abdicating the lock in wait set_owner(NULL); if (no_safepoint_check) { - wait_status = IWait(Self, timeout); + wait_status = _lock.wait(timeout); + set_owner(self); } else { - assert(Self->is_Java_thread(), "invariant"); - JavaThread *jt = (JavaThread *)Self; + assert(self->is_Java_thread(), "invariant"); + JavaThread *jt = (JavaThread *)self; + Monitor* in_flight_monitor = NULL; - // Enter safepoint region - ornate and Rococo ... - ThreadBlockInVM tbivm(jt); - OSThreadWaitState osts(Self->osthread(), false /* not Object.wait() */); + { + ThreadBlockInVMWithDeadlockCheck tbivmdc(jt, &in_flight_monitor); + OSThreadWaitState osts(self->osthread(), false /* not Object.wait() */); + if (as_suspend_equivalent) { + jt->set_suspend_equivalent(); + // cleared by handle_special_suspend_equivalent_condition() or + // java_suspend_self() + } - if (as_suspend_equivalent) { - jt->set_suspend_equivalent(); - // cleared by handle_special_suspend_equivalent_condition() or - // java_suspend_self() + wait_status = _lock.wait(timeout); + in_flight_monitor = this; // save for ~ThreadBlockInVMWithDeadlockCheck + + // were we externally suspended while we were waiting? + if (as_suspend_equivalent && jt->handle_special_suspend_equivalent_condition()) { + // Our event wait has finished and we own the lock, but + // while we were waiting another thread suspended us. We don't + // want to hold the lock while suspended because that + // would surprise the thread that suspended us. + _lock.unlock(); + jt->java_suspend_self(); + _lock.lock(); + } } - wait_status = IWait(Self, timeout); - - // were we externally suspended while we were waiting? - if (as_suspend_equivalent && jt->handle_special_suspend_equivalent_condition()) { - // Our event wait has finished and we own the lock, but - // while we were waiting another thread suspended us. We don't - // want to hold the lock while suspended because that - // would surprise the thread that suspended us. - assert(ILocked(), "invariant"); - IUnlock(true); - jt->java_suspend_self(); - ILock(Self); - assert(ILocked(), "invariant"); + if (in_flight_monitor != NULL) { + // Not unlocked by ~ThreadBlockInVMWithDeadlockCheck + assert_owner(NULL); + // Conceptually reestablish ownership of the lock. + set_owner(self); + } else { + lock(self); } } - - // Conceptually reestablish ownership of the lock. - // The "real" lock -- the LockByte -- was reacquired by IWait(). - assert(ILocked(), "invariant"); - assert(_owner == NULL, "invariant"); - set_owner(Self); return wait_status != 0; // return true IFF timeout } + +// Temporary JVM_RawMonitor* support. +// Yet another degenerate version of Monitor::lock() or lock_without_safepoint_check() +// jvm_raw_lock() and _unlock() can be called by non-Java threads via JVM_RawMonitorEnter. +// There's no expectation that JVM_RawMonitors will interoperate properly with the native +// Mutex-Monitor constructs. We happen to implement JVM_RawMonitors in terms of +// native Mutex-Monitors simply as a matter of convenience. + +void Monitor::jvm_raw_lock() { + _lock.lock(); + assert_owner(NULL); +} + +void Monitor::jvm_raw_unlock() { + assert_owner(NULL); + _lock.unlock(); +} + Monitor::~Monitor() { -#ifdef ASSERT - uintptr_t owner = UNS(_owner); - uintptr_t lockword = UNS(_LockWord.FullWord); - uintptr_t entrylist = UNS(_EntryList); - uintptr_t waitset = UNS(_WaitSet); - uintptr_t ondeck = UNS(_OnDeck); - // Print _name with precision limit, in case failure is due to memory - // corruption that also trashed _name. - assert((owner|lockword|entrylist|waitset|ondeck) == 0, - "%.*s: _owner(" INTPTR_FORMAT ")|_LockWord(" INTPTR_FORMAT ")|_EntryList(" INTPTR_FORMAT ")|_WaitSet(" - INTPTR_FORMAT ")|_OnDeck(" INTPTR_FORMAT ") != 0", - MONITOR_NAME_LEN, _name, owner, lockword, entrylist, waitset, ondeck); -#endif + assert_owner(NULL); } void Monitor::ClearMonitor(Monitor * m, const char *name) { m->_owner = NULL; - m->_snuck = false; if (name == NULL) { strcpy(m->_name, "UNKNOWN"); } else { strncpy(m->_name, name, MONITOR_NAME_LEN - 1); m->_name[MONITOR_NAME_LEN - 1] = '\0'; } - m->_LockWord.FullWord = 0; - m->_EntryList = NULL; - m->_OnDeck = NULL; - m->_WaitSet = NULL; - m->_WaitLock[0] = 0; } Monitor::Monitor() { @@ -1186,9 +277,7 @@ Mutex::Mutex(int Rank, const char * name, bool allow_vm_block, } bool Monitor::owned_by_self() const { - bool ret = _owner == Thread::current(); - assert(!ret || _LockWord.Bytes[_LSBINDEX] != 0, "invariant"); - return ret; + return _owner == Thread::current(); } void Monitor::print_on_error(outputStream* st) const { @@ -1197,21 +286,32 @@ void Monitor::print_on_error(outputStream* st) const { st->print(" - owner thread: " PTR_FORMAT, p2i(_owner)); } - - - // ---------------------------------------------------------------------------------- // Non-product code #ifndef PRODUCT void Monitor::print_on(outputStream* st) const { - st->print_cr("Mutex: [" PTR_FORMAT "/" PTR_FORMAT "] %s - owner: " PTR_FORMAT, - p2i(this), _LockWord.FullWord, _name, p2i(_owner)); + st->print_cr("Mutex: [" PTR_FORMAT "] %s - owner: " PTR_FORMAT, + p2i(this), _name, p2i(_owner)); } #endif #ifndef PRODUCT #ifdef ASSERT + +void Monitor::assert_owner(Thread * expected) { + const char* msg = "invalid owner"; + if (expected == NULL) { + msg = "should be un-owned"; + } + else if (expected == Thread::current()) { + msg = "should be owned by current thread"; + } + assert(_owner == expected, + "%s: owner=" INTPTR_FORMAT ", should be=" INTPTR_FORMAT, + msg, p2i(_owner), p2i(expected)); +} + Monitor * Monitor::get_least_ranked_lock(Monitor * locks) { Monitor *res, *tmp; for (res = tmp = locks; tmp != NULL; tmp = tmp->next()) { @@ -1297,8 +397,8 @@ void Monitor::set_owner_implementation(Thread *new_owner) { // Deadlock avoidance rules require us to acquire Mutexes only in // a global total order. For example m1 is the lowest ranked mutex // that the thread holds and m2 is the mutex the thread is trying - // to acquire, then deadlock avoidance rules require that the rank - // of m2 be less than the rank of m1. + // to acquire, then deadlock avoidance rules require that the rank + // of m2 be less than the rank of m1. // The rank Mutex::native is an exception in that it is not subject // to the verification rules. // Here are some further notes relating to mutex acquisition anomalies: diff --git a/src/hotspot/share/runtime/mutex.hpp b/src/hotspot/share/runtime/mutex.hpp index 3d5f1704a5b..17f9e01879d 100644 --- a/src/hotspot/share/runtime/mutex.hpp +++ b/src/hotspot/share/runtime/mutex.hpp @@ -29,50 +29,10 @@ #include "runtime/os.hpp" #include "utilities/histogram.hpp" -// The SplitWord construct allows us to colocate the contention queue -// (cxq) with the lock-byte. The queue elements are ParkEvents, which are -// always aligned on 256-byte addresses - the least significant byte of -// a ParkEvent is always 0. Colocating the lock-byte with the queue -// allows us to easily avoid what would otherwise be a race in lock() -// if we were to use two completely separate fields for the contention queue -// and the lock indicator. Specifically, colocation renders us immune -// from the race where a thread might enqueue itself in the lock() slow-path -// immediately after the lock holder drops the outer lock in the unlock() -// fast-path. -// -// Colocation allows us to use a fast-path unlock() form that uses -// A MEMBAR instead of a CAS. MEMBAR has lower local latency than CAS -// on many platforms. -// -// See: -// + http://blogs.sun.com/dave/entry/biased_locking_in_hotspot -// + http://blogs.sun.com/dave/resource/synchronization-public2.pdf -// -// Note that we're *not* using word-tearing the classic sense. -// The lock() fast-path will CAS the lockword and the unlock() -// fast-path will store into the lock-byte colocated within the lockword. -// We depend on the fact that all our reference platforms have -// coherent and atomic byte accesses. More precisely, byte stores -// interoperate in a safe, sane, and expected manner with respect to -// CAS, ST and LDs to the full-word containing the byte. -// If you're porting HotSpot to a platform where that isn't the case -// then you'll want change the unlock() fast path from: -// STB;MEMBAR #storeload; LDN -// to a full-word CAS of the lockword. - -union SplitWord { // full-word with separately addressable LSB - volatile intptr_t FullWord ; - volatile void * Address ; - volatile jbyte Bytes [sizeof(intptr_t)] ; -} ; - -class ParkEvent ; - -// See orderAccess.hpp. We assume throughout the VM that mutex lock and -// try_lock do fence-lock-acquire, and that unlock does a release-unlock, -// *in that order*. If their implementations change such that these -// assumptions are violated, a whole lot of code will break. +// A Mutex/Monitor is a simple wrapper around a native lock plus condition +// variable that supports lock ownership tracking, lock ranking for deadlock +// detection and coordinates with the safepoint protocol. // The default length of monitor name was originally chosen to be 64 to avoid // false sharing. Now, PaddedMonitor is available for this purpose. @@ -118,22 +78,10 @@ class Monitor : public CHeapObj { native = max_nonleaf + 1 }; - // The WaitSet and EntryList linked lists are composed of ParkEvents. - // I use ParkEvent instead of threads as ParkEvents are immortal and - // type-stable, meaning we can safely unpark() a possibly stale - // list element in the unlock()-path. - protected: // Monitor-Mutex metadata - SplitWord _LockWord ; // Contention queue (cxq) colocated with Lock-byte Thread * volatile _owner; // The owner of the lock - // Consider sequestering _owner on its own $line - // to aid future synchronization mechanisms. - ParkEvent * volatile _EntryList ; // List of threads waiting for entry - ParkEvent * volatile _OnDeck ; // heir-presumptive - volatile intptr_t _WaitLock [1] ; // Protects _WaitSet - ParkEvent * volatile _WaitSet ; // LL of ParkEvents - volatile bool _snuck; // Used for sneaky locking (evil). - char _name[MONITOR_NAME_LEN]; // Name of mutex + os::PlatformMonitor _lock; // Native monitor implementation + char _name[MONITOR_NAME_LEN]; // Name of mutex/monitor // Debugging fields for naming, deadlock detection, etc. (some only used in debug mode) #ifndef PRODUCT @@ -149,8 +97,8 @@ class Monitor : public CHeapObj { void set_owner_implementation(Thread* owner) PRODUCT_RETURN; void check_prelock_state (Thread* thread, bool safepoint_check) PRODUCT_RETURN; void check_block_state (Thread* thread) PRODUCT_RETURN; + void assert_owner (Thread* expected) NOT_DEBUG_RETURN; - // platform-dependent support code can go here (in os_.cpp) public: enum { _no_safepoint_check_flag = true, @@ -164,6 +112,9 @@ class Monitor : public CHeapObj { // consistent checking for each lock. // A few existing locks will sometimes have a safepoint check and // sometimes not, but these locks are set up in such a way to avoid deadlocks. + // Note: monitors that may be shared between JavaThreads and the VMThread + // should never encounter a safepoint check whilst they are held, else a + // deadlock with the VMThread can occur. enum SafepointCheckRequired { _safepoint_check_never, // Monitors with this value will cause errors // when acquired with a safepoint check. @@ -176,22 +127,6 @@ class Monitor : public CHeapObj { NOT_PRODUCT(SafepointCheckRequired _safepoint_check_required;) - enum WaitResults { - CONDVAR_EVENT, // Wait returned because of condition variable notification - INTERRUPT_EVENT, // Wait returned because waiting thread was interrupted - NUMBER_WAIT_RESULTS - }; - - private: - int TrySpin (Thread * Self) ; - int TryLock () ; - int TryFast () ; - int AcquireOrPush (ParkEvent * ev) ; - void IUnlock (bool RelaxAssert) ; - void ILock (Thread * Self) ; - int IWait (Thread * Self, jlong timo); - int ILocked () ; - protected: static void ClearMonitor (Monitor * m, const char* name = NULL) ; Monitor() ; @@ -208,8 +143,8 @@ class Monitor : public CHeapObj { bool wait(bool no_safepoint_check = !_no_safepoint_check_flag, long timeout = 0, bool as_suspend_equivalent = !_as_suspend_equivalent_flag); - bool notify(); - bool notify_all(); + void notify(); + void notify_all(); void lock(); // prints out warning if VM thread blocks @@ -219,6 +154,8 @@ class Monitor : public CHeapObj { bool try_lock(); // Like lock(), but unblocking. It returns false instead + void release_for_safepoint(); + // Lock without safepoint check. Should ONLY be used by safepoint code and other code // that is guaranteed not to block while running inside the VM. void lock_without_safepoint_check(); @@ -290,9 +227,6 @@ class PaddedMonitor : public Monitor { // there may have been some benefit to having distinct mutexes and monitors, but that time // has past. // -// The Mutex/Monitor design parallels that of Java-monitors, being based on -// thread-specific park-unpark platform-specific primitives. - class Mutex : public Monitor { // degenerate Monitor public: @@ -300,8 +234,8 @@ class Mutex : public Monitor { // degenerate Monitor SafepointCheckRequired safepoint_check_required = _safepoint_check_always); // default destructor private: - bool notify () { ShouldNotReachHere(); return false; } - bool notify_all() { ShouldNotReachHere(); return false; } + void notify () { ShouldNotReachHere(); } + void notify_all() { ShouldNotReachHere(); } bool wait (bool no_safepoint_check, long timeout, bool as_suspend_equivalent) { ShouldNotReachHere() ; return false ; diff --git a/src/hotspot/share/runtime/mutexLocker.hpp b/src/hotspot/share/runtime/mutexLocker.hpp index 64c3ae7491e..21eaa1c7823 100644 --- a/src/hotspot/share/runtime/mutexLocker.hpp +++ b/src/hotspot/share/runtime/mutexLocker.hpp @@ -272,18 +272,16 @@ class MonitorLockerEx: public MutexLockerEx { return false; } - bool notify_all() { + void notify_all() { if (_monitor != NULL) { - return _monitor->notify_all(); + _monitor->notify_all(); } - return true; } - bool notify() { + void notify() { if (_monitor != NULL) { - return _monitor->notify(); + _monitor->notify(); } - return true; } }; diff --git a/src/hotspot/share/runtime/safepoint.cpp b/src/hotspot/share/runtime/safepoint.cpp index 199b2cab873..4ea31dee8af 100644 --- a/src/hotspot/share/runtime/safepoint.cpp +++ b/src/hotspot/share/runtime/safepoint.cpp @@ -793,7 +793,7 @@ void SafepointSynchronize::check_for_lazy_critical_native(JavaThread *thread, Ja // ------------------------------------------------------------------------------------------------------- // Implementation of Safepoint callback point -void SafepointSynchronize::block(JavaThread *thread) { +void SafepointSynchronize::block(JavaThread *thread, bool block_in_safepoint_check) { assert(thread != NULL, "thread must be set"); assert(thread->is_Java_thread(), "not a Java thread"); @@ -848,28 +848,37 @@ void SafepointSynchronize::block(JavaThread *thread) { } } - // We transition the thread to state _thread_blocked here, but - // we can't do our usual check for external suspension and then - // self-suspend after the lock_without_safepoint_check() call - // below because we are often called during transitions while - // we hold different locks. That would leave us suspended while - // holding a resource which results in deadlocks. - thread->set_thread_state(_thread_blocked); - Safepoint_lock->unlock(); + if (block_in_safepoint_check) { + // We transition the thread to state _thread_blocked here, but + // we can't do our usual check for external suspension and then + // self-suspend after the lock_without_safepoint_check() call + // below because we are often called during transitions while + // we hold different locks. That would leave us suspended while + // holding a resource which results in deadlocks. + thread->set_thread_state(_thread_blocked); + Safepoint_lock->unlock(); - // We now try to acquire the threads lock. Since this lock is hold by the VM thread during - // the entire safepoint, the threads will all line up here during the safepoint. - Threads_lock->lock_without_safepoint_check(); - // restore original state. This is important if the thread comes from compiled code, so it - // will continue to execute with the _thread_in_Java state. - thread->set_thread_state(state); - Threads_lock->unlock(); + // We now try to acquire the threads lock. Since this lock is hold by the VM thread during + // the entire safepoint, the threads will all line up here during the safepoint. + Threads_lock->lock_without_safepoint_check(); + // restore original state. This is important if the thread comes from compiled code, so it + // will continue to execute with the _thread_in_Java state. + thread->set_thread_state(state); + Threads_lock->unlock(); + } else { + // We choose not to block in this call since we would be + // caught when transitioning back anyways if the safepoint + // is still going on. + thread->set_thread_state(state); + Safepoint_lock->unlock(); + } break; case _thread_in_native_trans: case _thread_blocked_trans: case _thread_new_trans: - if (thread->safepoint_state()->type() == ThreadSafepointState::_call_back) { + if (thread->safepoint_state()->type() == ThreadSafepointState::_call_back && + block_in_safepoint_check) { thread->print_thread_state(); fatal("Deadlock in safepoint code. " "Should have called back to the VM before blocking."); diff --git a/src/hotspot/share/runtime/safepoint.hpp b/src/hotspot/share/runtime/safepoint.hpp index 7b2d6e698ae..c1715ad190f 100644 --- a/src/hotspot/share/runtime/safepoint.hpp +++ b/src/hotspot/share/runtime/safepoint.hpp @@ -143,7 +143,7 @@ private: } // Called when a thread voluntarily blocks - static void block(JavaThread *thread); + static void block(JavaThread *thread, bool block_in_safepoint_check = true); friend class SafepointMechanism; diff --git a/src/hotspot/share/runtime/safepointMechanism.hpp b/src/hotspot/share/runtime/safepointMechanism.hpp index ad5f69fcb77..073d96f4049 100644 --- a/src/hotspot/share/runtime/safepointMechanism.hpp +++ b/src/hotspot/share/runtime/safepointMechanism.hpp @@ -72,12 +72,15 @@ public: #endif } - // Call this method to see if this thread should block for a safepoint. + // Call this method to see if this thread should block for a safepoint or process handshake. static inline bool should_block(Thread* thread); - // Blocks a thread until safepoint is completed + // Blocks a thread until safepoint/handshake is completed. static inline void block_if_requested(JavaThread* thread); + // Calls back if there is a pending safepoint but does not block for it. + static inline void callback_if_safepoint(JavaThread* thread); + // Caller is responsible for using a memory barrier if needed. static inline void arm_local_poll(JavaThread* thread); static inline void disarm_local_poll(JavaThread* thread); diff --git a/src/hotspot/share/runtime/safepointMechanism.inline.hpp b/src/hotspot/share/runtime/safepointMechanism.inline.hpp index 56a70604970..5ba31fe6ce9 100644 --- a/src/hotspot/share/runtime/safepointMechanism.inline.hpp +++ b/src/hotspot/share/runtime/safepointMechanism.inline.hpp @@ -62,6 +62,20 @@ void SafepointMechanism::block_if_requested(JavaThread *thread) { block_if_requested_slow(thread); } +void SafepointMechanism::callback_if_safepoint(JavaThread* thread) { + if (!uses_thread_local_poll() || local_poll_armed(thread)) { + // If using thread local polls, we should not check the + // global_poll() and callback via block() if the VMThread + // has not yet armed the local poll. Otherwise, when used in + // combination with should_block(), the latter could miss + // detecting the same safepoint that this method would detect + // if only checking global polls. + if (global_poll()) { + SafepointSynchronize::block(thread, false); + } + } +} + void SafepointMechanism::arm_local_poll(JavaThread* thread) { thread->set_polling_page(poll_armed_value()); } diff --git a/src/hotspot/share/runtime/thread.cpp b/src/hotspot/share/runtime/thread.cpp index c34c31145cc..ed296de3407 100644 --- a/src/hotspot/share/runtime/thread.cpp +++ b/src/hotspot/share/runtime/thread.cpp @@ -294,7 +294,6 @@ Thread::Thread() { // and ::Release() _ParkEvent = ParkEvent::Allocate(this); _SleepEvent = ParkEvent::Allocate(this); - _MutexEvent = ParkEvent::Allocate(this); _MuxEvent = ParkEvent::Allocate(this); #ifdef CHECK_UNHANDLED_OOPS @@ -460,7 +459,6 @@ Thread::~Thread() { // We NULL out the fields for good hygiene. ParkEvent::Release(_ParkEvent); _ParkEvent = NULL; ParkEvent::Release(_SleepEvent); _SleepEvent = NULL; - ParkEvent::Release(_MutexEvent); _MutexEvent = NULL; ParkEvent::Release(_MuxEvent); _MuxEvent = NULL; delete handle_area(); diff --git a/src/hotspot/share/runtime/thread.hpp b/src/hotspot/share/runtime/thread.hpp index 86f26b25c7b..066888a194e 100644 --- a/src/hotspot/share/runtime/thread.hpp +++ b/src/hotspot/share/runtime/thread.hpp @@ -782,7 +782,6 @@ protected: volatile int _TypeTag; ParkEvent * _ParkEvent; // for synchronized() ParkEvent * _SleepEvent; // for Thread.sleep - ParkEvent * _MutexEvent; // for native internal Mutex/Monitor ParkEvent * _MuxEvent; // for low-level muxAcquire-muxRelease int NativeSyncRecursion; // diagnostic @@ -792,8 +791,6 @@ protected: jint _hashStateY; jint _hashStateZ; - volatile jint rng[4]; // RNG for spin loop - // Low-level leaf-lock primitives used to implement synchronization // and native monitor-mutex infrastructure. // Not for general synchronization use. From 1fcbd0cd0dcd79f950ca6a164925c2d76929b553 Mon Sep 17 00:00:00 2001 From: Kim Barrett Date: Tue, 5 Feb 2019 16:46:49 -0500 Subject: [PATCH 22/36] 8217474: Remove WhiteBox.getConcurrentGCPhases() Remove function and supporting infrastructure. Reviewed-by: shade, tschatzl --- src/hotspot/share/gc/g1/g1CollectedHeap.cpp | 4 -- src/hotspot/share/gc/g1/g1CollectedHeap.hpp | 1 - .../share/gc/g1/g1ConcurrentMarkThread.cpp | 4 -- .../share/gc/g1/g1ConcurrentMarkThread.hpp | 1 - src/hotspot/share/gc/shared/collectedHeap.cpp | 5 -- src/hotspot/share/gc/shared/collectedHeap.hpp | 6 --- src/hotspot/share/prims/whitebox.cpp | 28 ----------- .../CheckSupported.java | 50 +------------------ .../CheckUnsupported.java | 7 --- .../TestConcurrentPhaseControlG1Basics.java | 20 +------- test/lib/sun/hotspot/WhiteBox.java | 5 -- 11 files changed, 3 insertions(+), 128 deletions(-) diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp index ef4dbf39643..381f89563fa 100644 --- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp +++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp @@ -2323,10 +2323,6 @@ bool G1CollectedHeap::supports_concurrent_phase_control() const { return true; } -const char* const* G1CollectedHeap::concurrent_phases() const { - return _cm_thread->concurrent_phases(); -} - bool G1CollectedHeap::request_concurrent_phase(const char* phase) { return _cm_thread->request_concurrent_phase(phase); } diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp index a6330980682..6f0594c499d 100644 --- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp +++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp @@ -1369,7 +1369,6 @@ public: // WhiteBox testing support. virtual bool supports_concurrent_phase_control() const; - virtual const char* const* concurrent_phases() const; virtual bool request_concurrent_phase(const char* phase); virtual WorkGang* get_safepoint_workers() { return _workers; } diff --git a/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp b/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp index 47df5fce0e3..6e3dbd3ce3e 100644 --- a/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp +++ b/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp @@ -224,10 +224,6 @@ public: { } }; -const char* const* G1ConcurrentMarkThread::concurrent_phases() const { - return concurrent_phase_names; -} - bool G1ConcurrentMarkThread::request_concurrent_phase(const char* phase_name) { int phase = lookup_concurrent_phase(phase_name); if (phase < 0) return false; diff --git a/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp b/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp index 299a59fd0f4..8c3c7f37608 100644 --- a/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp +++ b/src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp @@ -90,7 +90,6 @@ class G1ConcurrentMarkThread: public ConcurrentGCThread { bool during_cycle() { return !idle(); } // WhiteBox testing support. - const char* const* concurrent_phases() const; bool request_concurrent_phase(const char* phase); ConcurrentGCPhaseManager::Stack* phase_manager_stack() { diff --git a/src/hotspot/share/gc/shared/collectedHeap.cpp b/src/hotspot/share/gc/shared/collectedHeap.cpp index 9d863842276..70a3a6aafc3 100644 --- a/src/hotspot/share/gc/shared/collectedHeap.cpp +++ b/src/hotspot/share/gc/shared/collectedHeap.cpp @@ -161,11 +161,6 @@ bool CollectedHeap::supports_concurrent_phase_control() const { return false; } -const char* const* CollectedHeap::concurrent_phases() const { - static const char* const result[] = { NULL }; - return result; -} - bool CollectedHeap::request_concurrent_phase(const char* phase) { return false; } diff --git a/src/hotspot/share/gc/shared/collectedHeap.hpp b/src/hotspot/share/gc/shared/collectedHeap.hpp index faac84db4ca..b9d220f08a7 100644 --- a/src/hotspot/share/gc/shared/collectedHeap.hpp +++ b/src/hotspot/share/gc/shared/collectedHeap.hpp @@ -534,12 +534,6 @@ class CollectedHeap : public CHeapObj { // The default implementation returns false. virtual bool supports_concurrent_phase_control() const; - // Return a NULL terminated array of concurrent phase names provided - // by this collector. Supports Whitebox testing. These are the - // names recognized by request_concurrent_phase(). The default - // implementation returns an array of one NULL element. - virtual const char* const* concurrent_phases() const; - // Request the collector enter the indicated concurrent phase, and // wait until it does so. Supports WhiteBox testing. Only one // request may be active at a time. Phases are designated by name; diff --git a/src/hotspot/share/prims/whitebox.cpp b/src/hotspot/share/prims/whitebox.cpp index 6114504c800..a3fc2b92948 100644 --- a/src/hotspot/share/prims/whitebox.cpp +++ b/src/hotspot/share/prims/whitebox.cpp @@ -394,32 +394,6 @@ WB_ENTRY(jboolean, WB_SupportsConcurrentGCPhaseControl(JNIEnv* env, jobject o)) return Universe::heap()->supports_concurrent_phase_control(); WB_END -WB_ENTRY(jobjectArray, WB_GetConcurrentGCPhases(JNIEnv* env, jobject o)) - const char* const* phases = Universe::heap()->concurrent_phases(); - jint nphases = 0; - for ( ; phases[nphases] != NULL; ++nphases) ; - - ResourceMark rm(thread); - ThreadToNativeFromVM ttn(thread); - jclass clazz = env->FindClass(vmSymbols::java_lang_Object()->as_C_string()); - CHECK_JNI_EXCEPTION_(env, NULL); - - jobjectArray result = env->NewObjectArray(nphases, clazz, NULL); - CHECK_JNI_EXCEPTION_(env, NULL); - - // If push fails, return with pending exception. - if (env->PushLocalFrame(nphases) < 0) return NULL; - for (jint i = 0; i < nphases; ++i) { - jstring phase = env->NewStringUTF(phases[i]); - CHECK_JNI_EXCEPTION_(env, NULL); - env->SetObjectArrayElement(result, i, phase); - CHECK_JNI_EXCEPTION_(env, NULL); - } - env->PopLocalFrame(NULL); - - return result; -WB_END - WB_ENTRY(jboolean, WB_RequestConcurrentGCPhase(JNIEnv* env, jobject o, jstring name)) Handle h_name(THREAD, JNIHandles::resolve(name)); ResourceMark rm; @@ -2351,8 +2325,6 @@ static JNINativeMethod methods[] = { {CC"isGCSelected", CC"(I)Z", (void*)&WB_IsGCSelected}, {CC"isGCSelectedErgonomically", CC"()Z", (void*)&WB_IsGCSelectedErgonomically}, {CC"supportsConcurrentGCPhaseControl", CC"()Z", (void*)&WB_SupportsConcurrentGCPhaseControl}, - {CC"getConcurrentGCPhases", CC"()[Ljava/lang/String;", - (void*)&WB_GetConcurrentGCPhases}, {CC"requestConcurrentGCPhase0", CC"(Ljava/lang/String;)Z", (void*)&WB_RequestConcurrentGCPhase}, {CC"checkLibSpecifiesNoexecstack", CC"(Ljava/lang/String;)Z", diff --git a/test/hotspot/jtreg/gc/concurrent_phase_control/CheckSupported.java b/test/hotspot/jtreg/gc/concurrent_phase_control/CheckSupported.java index b19706200c3..282e942e2eb 100644 --- a/test/hotspot/jtreg/gc/concurrent_phase_control/CheckSupported.java +++ b/test/hotspot/jtreg/gc/concurrent_phase_control/CheckSupported.java @@ -30,66 +30,18 @@ package gc.concurrent_phase_control; */ import sun.hotspot.WhiteBox; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; public class CheckSupported { private static final WhiteBox WB = WhiteBox.getWhiteBox(); - private static Set toSet(List list, String which) - throws Exception - { - Set result = new HashSet(list); - if (result.size() < list.size()) { - throw new RuntimeException(which + " phases contains duplicates"); - } - return result; - } - - private static void checkPhases(String[] expectedPhases) throws Exception { - String[] actualPhases = WB.getConcurrentGCPhases(); - - List expectedList = Arrays.asList(expectedPhases); - List actualList = Arrays.asList(actualPhases); - - Set expected = toSet(expectedList, "Expected"); - Set actual = toSet(actualList, "Actual"); - - expected.removeAll(actualList); - actual.removeAll(expectedList); - - boolean match = true; - if (!expected.isEmpty()) { - match = false; - System.out.println("Unexpected phases:"); - for (String s: expected) { - System.out.println(" " + s); - } - } - if (!actual.isEmpty()) { - match = false; - System.out.println("Expected but missing phases:"); - for (String s: actual) { - System.out.println(" " + s); - } - } - if (!match) { - throw new RuntimeException("Mismatch between expected and actual phases"); - } - } - - public static void check(String gcName, String[] phases) throws Exception { + public static void check(String gcName) throws Exception { // Verify supported. if (!WB.supportsConcurrentGCPhaseControl()) { throw new RuntimeException( gcName + " unexpectedly missing phase control support"); } - checkPhases(phases); - // Verify IllegalArgumentException thrown by request attempt // with unknown phase. boolean illegalArgumentThrown = false; diff --git a/test/hotspot/jtreg/gc/concurrent_phase_control/CheckUnsupported.java b/test/hotspot/jtreg/gc/concurrent_phase_control/CheckUnsupported.java index 798765a10a2..b4f4229c92f 100644 --- a/test/hotspot/jtreg/gc/concurrent_phase_control/CheckUnsupported.java +++ b/test/hotspot/jtreg/gc/concurrent_phase_control/CheckUnsupported.java @@ -42,13 +42,6 @@ public class CheckUnsupported { gcName + " unexpectedly supports phase control"); } - // Verify phase sequence is empty. - String[] phases = WB.getConcurrentGCPhases(); - if (phases.length > 0) { - throw new RuntimeException( - gcName + " unexpectedly has non-empty phases"); - } - // Verify IllegalStateException thrown by request attempt. boolean illegalStateThrown = false; try { diff --git a/test/hotspot/jtreg/gc/concurrent_phase_control/TestConcurrentPhaseControlG1Basics.java b/test/hotspot/jtreg/gc/concurrent_phase_control/TestConcurrentPhaseControlG1Basics.java index 0261066449c..f8a552c91ff 100644 --- a/test/hotspot/jtreg/gc/concurrent_phase_control/TestConcurrentPhaseControlG1Basics.java +++ b/test/hotspot/jtreg/gc/concurrent_phase_control/TestConcurrentPhaseControlG1Basics.java @@ -27,8 +27,7 @@ package gc.concurrent_phase_control; * @test TestConcurrentPhaseControlG1Basics * @bug 8169517 * @requires vm.gc.G1 - * @summary Verify G1 supports concurrent phase control and has the - * expected set of phases. + * @summary Verify G1 supports concurrent phase control. * @key gc * @modules java.base * @library /test/lib / @@ -45,22 +44,7 @@ import gc.concurrent_phase_control.CheckSupported; public class TestConcurrentPhaseControlG1Basics { - private static final String[] phases = { - "ANY", - "IDLE", - "CONCURRENT_CYCLE", - "CLEAR_CLAIMED_MARKS", - "SCAN_ROOT_REGIONS", - "CONCURRENT_MARK", - "MARK_FROM_ROOTS", - "PRECLEAN", - "BEFORE_REMARK", - "REMARK", - "REBUILD_REMEMBERED_SETS", - "CLEANUP_FOR_NEXT_MARK", - }; - public static void main(String[] args) throws Exception { - CheckSupported.check("G1", phases); + CheckSupported.check("G1"); } } diff --git a/test/lib/sun/hotspot/WhiteBox.java b/test/lib/sun/hotspot/WhiteBox.java index b498b327ce9..16f179c8744 100644 --- a/test/lib/sun/hotspot/WhiteBox.java +++ b/test/lib/sun/hotspot/WhiteBox.java @@ -402,11 +402,6 @@ public class WhiteBox { // always fail. public native boolean supportsConcurrentGCPhaseControl(); - // Returns an array of concurrent phase names provided by this - // collector. These are the names recognized by - // requestConcurrentGCPhase(). - public native String[] getConcurrentGCPhases(); - // Attempt to put the collector into the indicated concurrent phase, // and attempt to remain in that state until a new request is made. // From f380787a41e6785eff73a0712855afbad3a6b458 Mon Sep 17 00:00:00 2001 From: Brian Burkhalter Date: Tue, 5 Feb 2019 14:36:50 -0800 Subject: [PATCH 23/36] 8218460: Test generation scripts do not invoke stream preprocessor correctly Reviewed-by: rriggs --- make/jdk/src/classes/build/tools/spp/Spp.java | 5 +++-- .../lang/invoke/VarHandles/generate-vh-tests.sh | 16 ++++++++++++---- test/jdk/java/nio/Buffer/genBasic.sh | 6 ++++-- test/jdk/java/nio/Buffer/genCopyDirectMemory.sh | 8 +++++--- test/jdk/java/nio/Buffer/genOrder.sh | 8 +++++--- test/jdk/java/util/Formatter/genBasic.sh | 6 ++++-- 6 files changed, 33 insertions(+), 16 deletions(-) diff --git a/make/jdk/src/classes/build/tools/spp/Spp.java b/make/jdk/src/classes/build/tools/spp/Spp.java index 34ff06a2ad9..6921c65667b 100644 --- a/make/jdk/src/classes/build/tools/spp/Spp.java +++ b/make/jdk/src/classes/build/tools/spp/Spp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,7 +34,8 @@ import java.util.regex.*; * Spp: A simple regex-based stream preprocessor based on Mark Reinhold's * sed-based spp.sh * - * Usage: java build.tools.spp.Spp [-be] [-nel] [-Kkey] -Dvar=value ... out + * Usage: + * java build.tools.spp.Spp [-be] [-nel] [-Kkey] -Dvar=value ... -iin -oout * * If -nel is declared then empty lines will not be substituted for lines of * text in the template that do not appear in the output. diff --git a/test/jdk/java/lang/invoke/VarHandles/generate-vh-tests.sh b/test/jdk/java/lang/invoke/VarHandles/generate-vh-tests.sh index 5d489a16f09..391de865f81 100644 --- a/test/jdk/java/lang/invoke/VarHandles/generate-vh-tests.sh +++ b/test/jdk/java/lang/invoke/VarHandles/generate-vh-tests.sh @@ -82,9 +82,15 @@ do args="$args -Dvalue1=$value1 -Dvalue2=$value2 -Dvalue3=$value3 -Dwrong_primitive_type=$wrong_primitive_type" echo $args - java $SPP -nel $args < X-VarHandleTestAccess.java.template > VarHandleTestAccess${Type}.java - java $SPP -nel $args < X-VarHandleTestMethodHandleAccess.java.template > VarHandleTestMethodHandleAccess${Type}.java - java $SPP -nel $args < X-VarHandleTestMethodType.java.template > VarHandleTestMethodType${Type}.java + out=VarHandleTestAccess${Type}.java + rm -f $out + java $SPP -nel $args -iX-VarHandleTestAccess.java.template -o$out + out=VarHandleTestMethodHandleAccess${Type}.java + rm -f $out + java $SPP -nel $args -iX-VarHandleTestMethodHandleAccess.java.template -o$out + out=VarHandleTestMethodType${Type}.java + rm -f $out + java $SPP -nel $args -iX-VarHandleTestMethodType.java.template -o$out done for type in short char int long float double @@ -161,7 +167,9 @@ do args="$args -Dvalue1=$value1 -Dvalue2=$value2 -Dvalue3=$value3" echo $args - java $SPP -nel $args < X-VarHandleTestByteArrayView.java.template > VarHandleTestByteArrayAs${Type}.java + out=VarHandleTestByteArrayAs${Type}.java + rm -f $out + java $SPP -nel $args -iX-VarHandleTestByteArrayView.java.template -o$out done rm -fr build diff --git a/test/jdk/java/nio/Buffer/genBasic.sh b/test/jdk/java/nio/Buffer/genBasic.sh index 2fd00e8d0db..d08ca32300f 100644 --- a/test/jdk/java/nio/Buffer/genBasic.sh +++ b/test/jdk/java/nio/Buffer/genBasic.sh @@ -1,7 +1,7 @@ #! /bin/sh # -# Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,9 @@ javac -d . ../../../../../make/jdk/src/classes/build/tools/spp/Spp.java gen() { - java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3 Basic$2.java + out=Basic$2.java + rm -f $out + java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3 -iBasic-X.java.template -o$out } gen byte Byte Byte diff --git a/test/jdk/java/nio/Buffer/genCopyDirectMemory.sh b/test/jdk/java/nio/Buffer/genCopyDirectMemory.sh index e2190295a51..90072c52950 100644 --- a/test/jdk/java/nio/Buffer/genCopyDirectMemory.sh +++ b/test/jdk/java/nio/Buffer/genCopyDirectMemory.sh @@ -1,7 +1,7 @@ #! /bin/sh # -# Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2002, 2019, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -23,10 +23,12 @@ # questions. # -javac -d . ../../../../../make/jdk/src/classes/build/tools/spp/Spp.java > Spp.java +javac -d . ../../../../../make/jdk/src/classes/build/tools/spp/Spp.java gen() { - java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3CopyDirect$2Memory.java + out=CopyDirect$2Memory.java + rm -f $out + java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3 -iCopyDirect-X-Memory.java.template -o$out } gen byte Byte Byte diff --git a/test/jdk/java/nio/Buffer/genOrder.sh b/test/jdk/java/nio/Buffer/genOrder.sh index f505e4d17b6..cbdd9863df8 100644 --- a/test/jdk/java/nio/Buffer/genOrder.sh +++ b/test/jdk/java/nio/Buffer/genOrder.sh @@ -1,7 +1,7 @@ #! /bin/sh # -# Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2002, 2019, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -23,9 +23,11 @@ # questions. # -javac -d . ../../../../../make/jdk/src/classes/build/tools/spp/Spp.java > Spp.java +javac -d . ../../../../../make/jdk/src/classes/build/tools/spp/Spp.java gen() { - java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3Order$2.java + out=Order$2.java + rm -f $out + java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3 -iOrder-X.java.template -o$out } gen char Char Character diff --git a/test/jdk/java/util/Formatter/genBasic.sh b/test/jdk/java/util/Formatter/genBasic.sh index de7f4662f0d..809873fbfd4 100644 --- a/test/jdk/java/util/Formatter/genBasic.sh +++ b/test/jdk/java/util/Formatter/genBasic.sh @@ -1,7 +1,7 @@ #! /bin/sh # -# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -30,7 +30,9 @@ gen() { # then $SPP -K$1 -Dtype=$1 -DType=$2 -KprimBasic$2.java # else $SPP -K$1 -Dtype=$1 -DType=$2 -K$3 Basic$2.java # fi - java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -K$3 -K$4 -K$5 -K$6 Basic$2.java + out=Basic$2.java + rm -f $out + java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -K$3 -K$4 -K$5 -K$6 -iBasic-X.java.template -o$out } gen boolean Boolean prim "" "" "" From 643ca208661dc7c2928d64c66a503562fe7bc2a8 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 5 Feb 2019 15:06:08 -0800 Subject: [PATCH 24/36] 8180901: Transformer.reset() resets the state only once Reviewed-by: rriggs, lancea --- .../internal/xsltc/trax/TransformerImpl.java | 6 +- .../jaxp/unittest/transform/ResetTest.java | 97 +++++++++++++++++++ 2 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 test/jaxp/javax/xml/jaxp/unittest/transform/ResetTest.java diff --git a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java index c421b750b91..c23477f3040 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java +++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2019, Oracle and/or its affiliates. All rights reserved. */ /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -93,7 +93,7 @@ import org.xml.sax.ext.LexicalHandler; * @author Morten Jorgensen * @author G. Todd Miller * @author Santiago Pericas-Geertsen - * @LastModified: Nov 2017 + * @LastModified: Feb 2019 */ public final class TransformerImpl extends Transformer implements DOMCache, ErrorListener @@ -925,7 +925,7 @@ public final class TransformerImpl extends Transformer } } else { - _properties = _propertiesClone; + _properties = (Properties)_propertiesClone.clone(); } } diff --git a/test/jaxp/javax/xml/jaxp/unittest/transform/ResetTest.java b/test/jaxp/javax/xml/jaxp/unittest/transform/ResetTest.java new file mode 100644 index 00000000000..aea7abeaeb1 --- /dev/null +++ b/test/jaxp/javax/xml/jaxp/unittest/transform/ResetTest.java @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package transform; + +import java.io.ByteArrayInputStream; +import java.io.StringWriter; +import java.io.UnsupportedEncodingException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import org.testng.annotations.Test; +import javax.xml.transform.OutputKeys; +import org.testng.Assert; + +/* + * @test + * @bug 8180901 + * @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest + * @run testng/othervm transform.ResetTest + * @summary Verifies reset functions + */ +public class ResetTest { + + private static final String INPUT_XML = "123"; + /* + * Verifies that the reset method sets the Transformer to its original state + * properly. + */ + @Test + public void testReset() throws Exception { + TransformerFactory transformerFactory = + new com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl(); + + // run #1 + Transformer transformer = transformerFactory.newTransformer(); + + setDefaultOutputProperties(transformer); + String outputXml1 = transform(INPUT_XML, transformer); + System.out.println("#1 output XML: " + outputXml1); + + // run #2 + transformer.reset(); + + setDefaultOutputProperties(transformer); + // use different output properties in run #2 (after the 1st reset): + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + String outputXml2 = transform(INPUT_XML, transformer); + System.out.println("#2 output XML: " + outputXml2); + + // run #3 + transformer.reset(); + + setDefaultOutputProperties(transformer); + // use same output properties as run #1 => expect same output + String outputXml3 = transform(INPUT_XML, transformer); + System.out.println("#3 output XML: " + outputXml3); + Assert.assertEquals(outputXml3, outputXml1, "Output is expected to be equal after reset."); + } + + private static void setDefaultOutputProperties(Transformer transformer) { + transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); + transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); + } + + private static String transform(String xml, Transformer transformer) + throws TransformerException, UnsupportedEncodingException { + StringWriter writer = new StringWriter(); + transformer.transform(new StreamSource(new ByteArrayInputStream(xml.getBytes("UTF-8"))), + new StreamResult(writer)); + return writer.toString(); + } +} From 076d2267b6684fc61f1a1922188e5bc80adb768d Mon Sep 17 00:00:00 2001 From: Ivan Gerasimov Date: Tue, 5 Feb 2019 17:05:40 -0800 Subject: [PATCH 25/36] 8218227: StringBuilder/StringBuffer constructor throws confusing NegativeArraySizeException Reviewed-by: rriggs --- .../java/lang/AbstractStringBuilder.java | 15 +++- .../share/classes/java/lang/StringBuffer.java | 6 +- .../classes/java/lang/StringBuilder.java | 6 +- .../java/lang/StringBuffer/HugeCapacity.java | 77 +++++++++++++++++++ .../java/lang/StringBuilder/HugeCapacity.java | 42 +++++++++- 5 files changed, 136 insertions(+), 10 deletions(-) create mode 100644 test/jdk/java/lang/StringBuffer/HugeCapacity.java diff --git a/src/java.base/share/classes/java/lang/AbstractStringBuilder.java b/src/java.base/share/classes/java/lang/AbstractStringBuilder.java index 2af6f1723f3..c42ff28eaf9 100644 --- a/src/java.base/share/classes/java/lang/AbstractStringBuilder.java +++ b/src/java.base/share/classes/java/lang/AbstractStringBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -91,6 +91,19 @@ abstract class AbstractStringBuilder implements Appendable, CharSequence { } } + /** + * Creates an AbstractStringBuilder with the specified coder and with + * the initial capacity equal to the smaller of (capacity + addition) + * and Integer.MAX_VALUE. + */ + AbstractStringBuilder(byte coder, int capacity, int addition) { + this.coder = coder; + capacity = (capacity < Integer.MAX_VALUE - addition) + ? capacity + addition : Integer.MAX_VALUE; + value = (coder == LATIN1) + ? new byte[capacity] : StringUTF16.newBytesFor(capacity); + } + /** * Compares the objects of two AbstractStringBuilder implementations lexicographically. * diff --git a/src/java.base/share/classes/java/lang/StringBuffer.java b/src/java.base/share/classes/java/lang/StringBuffer.java index e597a8112e4..bdd6280ca0f 100644 --- a/src/java.base/share/classes/java/lang/StringBuffer.java +++ b/src/java.base/share/classes/java/lang/StringBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -148,7 +148,7 @@ import jdk.internal.HotSpotIntrinsicCandidate; */ @HotSpotIntrinsicCandidate public StringBuffer(String str) { - super(str.length() + 16); + super(str.coder(), str.length(), 16); append(str); } @@ -166,7 +166,7 @@ import jdk.internal.HotSpotIntrinsicCandidate; * @since 1.5 */ public StringBuffer(CharSequence seq) { - this(seq.length() + 16); + super(String.LATIN1, seq.length(), 16); append(seq); } diff --git a/src/java.base/share/classes/java/lang/StringBuilder.java b/src/java.base/share/classes/java/lang/StringBuilder.java index 40da2083c27..02b3a09ce12 100644 --- a/src/java.base/share/classes/java/lang/StringBuilder.java +++ b/src/java.base/share/classes/java/lang/StringBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -121,7 +121,7 @@ public final class StringBuilder */ @HotSpotIntrinsicCandidate public StringBuilder(String str) { - super(str.length() + 16); + super(str.coder(), str.length(), 16); append(str); } @@ -134,7 +134,7 @@ public final class StringBuilder * @param seq the sequence to copy. */ public StringBuilder(CharSequence seq) { - this(seq.length() + 16); + super(String.LATIN1, seq.length(), 16); append(seq); } diff --git a/test/jdk/java/lang/StringBuffer/HugeCapacity.java b/test/jdk/java/lang/StringBuffer/HugeCapacity.java new file mode 100644 index 00000000000..c6583455269 --- /dev/null +++ b/test/jdk/java/lang/StringBuffer/HugeCapacity.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8218227 + * @summary StringBuilder/StringBuffer constructor throws confusing + * NegativeArraySizeException + * @requires os.maxMemory >= 6G + * @run main/othervm -Xms5G -Xmx5G HugeCapacity + * @ignore This test has huge memory requirements + */ + +public class HugeCapacity { + private static int failures = 0; + + public static void main(String[] args) { + testHugeInitialString(); + testHugeInitialCharSequence(); + if (failures > 0) { + throw new RuntimeException(failures + " tests failed"); + } + } + + private static void testHugeInitialString() { + try { + String str = "Z".repeat(Integer.MAX_VALUE - 8); + StringBuffer sb = new StringBuffer(str); + } catch (OutOfMemoryError ignore) { + } catch (Throwable unexpected) { + unexpected.printStackTrace(); + failures++; + } + } + + private static void testHugeInitialCharSequence() { + try { + CharSequence seq = new MyHugeCharSeq(); + StringBuffer sb = new StringBuffer(seq); + } catch (OutOfMemoryError ignore) { + } catch (Throwable unexpected) { + unexpected.printStackTrace(); + failures++; + } + } + + private static class MyHugeCharSeq implements CharSequence { + public char charAt(int i) { + throw new UnsupportedOperationException(); + } + public int length() { return Integer.MAX_VALUE; } + public CharSequence subSequence(int st, int e) { + throw new UnsupportedOperationException(); + } + public String toString() { return ""; } + } +} diff --git a/test/jdk/java/lang/StringBuilder/HugeCapacity.java b/test/jdk/java/lang/StringBuilder/HugeCapacity.java index 912a2539e96..a227b67d31a 100644 --- a/test/jdk/java/lang/StringBuilder/HugeCapacity.java +++ b/test/jdk/java/lang/StringBuilder/HugeCapacity.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,10 +23,11 @@ /** * @test - * @bug 8149330 + * @bug 8149330 8218227 * @summary Capacity should not get close to Integer.MAX_VALUE unless * necessary - * @run main/othervm -Xmx5G HugeCapacity + * @requires os.maxMemory >= 6G + * @run main/othervm -Xms5G -Xmx5G HugeCapacity * @ignore This test has huge memory requirements */ @@ -36,6 +37,8 @@ public class HugeCapacity { public static void main(String[] args) { testLatin1(); testUtf16(); + testHugeInitialString(); + testHugeInitialCharSequence(); if (failures > 0) { throw new RuntimeException(failures + " tests failed"); } @@ -63,4 +66,37 @@ public class HugeCapacity { failures++; } } + + private static void testHugeInitialString() { + try { + String str = "Z".repeat(Integer.MAX_VALUE - 8); + StringBuilder sb = new StringBuilder(str); + } catch (OutOfMemoryError ignore) { + } catch (Throwable unexpected) { + unexpected.printStackTrace(); + failures++; + } + } + + private static void testHugeInitialCharSequence() { + try { + CharSequence seq = new MyHugeCharSeq(); + StringBuilder sb = new StringBuilder(seq); + } catch (OutOfMemoryError ignore) { + } catch (Throwable unexpected) { + unexpected.printStackTrace(); + failures++; + } + } + + private static class MyHugeCharSeq implements CharSequence { + public char charAt(int i) { + throw new UnsupportedOperationException(); + } + public int length() { return Integer.MAX_VALUE; } + public CharSequence subSequence(int st, int e) { + throw new UnsupportedOperationException(); + } + public String toString() { return ""; } + } } From 07664f43d4fa233cc73d1628fbf17796bf4a7856 Mon Sep 17 00:00:00 2001 From: David Holmes Date: Tue, 5 Feb 2019 20:18:00 -0500 Subject: [PATCH 26/36] 8217843: Performance regression related to os::supports_monotonic_clock() on linux Reviewed-by: redestad, stuefe --- src/hotspot/os/linux/os_linux.inline.hpp | 1 + src/hotspot/os/posix/os_posix.cpp | 25 +++---------- src/hotspot/os/posix/os_posix.hpp | 5 +++ src/hotspot/os/posix/os_posix.inline.hpp | 47 ++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 19 deletions(-) create mode 100644 src/hotspot/os/posix/os_posix.inline.hpp diff --git a/src/hotspot/os/linux/os_linux.inline.hpp b/src/hotspot/os/linux/os_linux.inline.hpp index 17961c21c9f..99081e084ad 100644 --- a/src/hotspot/os/linux/os_linux.inline.hpp +++ b/src/hotspot/os/linux/os_linux.inline.hpp @@ -26,6 +26,7 @@ #define OS_LINUX_OS_LINUX_INLINE_HPP #include "runtime/os.hpp" +#include "os_posix.inline.hpp" // System includes diff --git a/src/hotspot/os/posix/os_posix.cpp b/src/hotspot/os/posix/os_posix.cpp index af7f3dece88..b416bc2b266 100644 --- a/src/hotspot/os/posix/os_posix.cpp +++ b/src/hotspot/os/posix/os_posix.cpp @@ -25,10 +25,10 @@ #include "jvm.h" #include "logging/log.hpp" #include "memory/allocation.inline.hpp" +#include "os_posix.inline.hpp" #include "utilities/globalDefinitions.hpp" #include "runtime/frame.inline.hpp" #include "runtime/interfaceSupport.inline.hpp" -#include "runtime/os.hpp" #include "services/memTracker.hpp" #include "utilities/align.hpp" #include "utilities/formatBuffer.hpp" @@ -1659,26 +1659,13 @@ static void pthread_init_common(void) { // This means we have clockid_t, clock_gettime et al and CLOCK_MONOTONIC -static int (*_clock_gettime)(clockid_t, struct timespec *) = NULL; -static int (*_clock_getres)(clockid_t, struct timespec *) = NULL; +int (*os::Posix::_clock_gettime)(clockid_t, struct timespec *) = NULL; +int (*os::Posix::_clock_getres)(clockid_t, struct timespec *) = NULL; + static int (*_pthread_condattr_setclock)(pthread_condattr_t *, clockid_t) = NULL; static bool _use_clock_monotonic_condattr = false; -// Exported clock functionality - -int os::Posix::clock_gettime(clockid_t clock_id, struct timespec *tp) { - return _clock_gettime != NULL ? _clock_gettime(clock_id, tp) : -1; -} - -int os::Posix::clock_getres(clockid_t clock_id, struct timespec *tp) { - return _clock_getres != NULL ? _clock_getres(clock_id, tp) : -1; -} - -bool os::Posix::supports_monotonic_clock() { - return _clock_gettime != NULL; -} - // Determine what POSIX API's are present and do appropriate // configuration. void os::Posix::init(void) { @@ -1879,12 +1866,12 @@ static void to_abstime(timespec* abstime, jlong timeout, clockid_t clock = CLOCK_MONOTONIC; // need to ensure we have a runtime check for clock_gettime support - if (!isAbsolute && _clock_gettime != NULL) { + if (!isAbsolute && os::Posix::supports_monotonic_clock()) { if (!_use_clock_monotonic_condattr || isRealtime) { clock = CLOCK_REALTIME; } struct timespec now; - int status = _clock_gettime(clock, &now); + int status = os::Posix::clock_gettime(clock, &now); assert_status(status == 0, status, "clock_gettime"); calc_rel_time(abstime, timeout, now.tv_sec, now.tv_nsec, NANOUNITS); DEBUG_ONLY(max_secs += now.tv_sec;) diff --git a/src/hotspot/os/posix/os_posix.hpp b/src/hotspot/os/posix/os_posix.hpp index ef5e088fe9e..40501fdf488 100644 --- a/src/hotspot/os/posix/os_posix.hpp +++ b/src/hotspot/os/posix/os_posix.hpp @@ -123,6 +123,11 @@ public: #ifdef SUPPORTS_CLOCK_MONOTONIC +private: + // These need to be members so we can access them from inline functions + static int (*_clock_gettime)(clockid_t, struct timespec *); + static int (*_clock_getres)(clockid_t, struct timespec *); +public: static bool supports_monotonic_clock(); static int clock_gettime(clockid_t clock_id, struct timespec *tp); static int clock_getres(clockid_t clock_id, struct timespec *tp); diff --git a/src/hotspot/os/posix/os_posix.inline.hpp b/src/hotspot/os/posix/os_posix.inline.hpp new file mode 100644 index 00000000000..aa0c2402ffd --- /dev/null +++ b/src/hotspot/os/posix/os_posix.inline.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef OS_POSIX_OS_POSIX_INLINE_HPP +#define OS_POSIX_OS_POSIX_INLINE_HPP + +#include "runtime/os.hpp" + +#ifdef SUPPORTS_CLOCK_MONOTONIC + +// Exported clock functionality + +inline bool os::Posix::supports_monotonic_clock() { + return _clock_gettime != NULL; +} + +inline int os::Posix::clock_gettime(clockid_t clock_id, struct timespec *tp) { + return _clock_gettime != NULL ? _clock_gettime(clock_id, tp) : -1; +} + +inline int os::Posix::clock_getres(clockid_t clock_id, struct timespec *tp) { + return _clock_getres != NULL ? _clock_getres(clock_id, tp) : -1; +} +#endif // SUPPORTS_CLOCK_MONOTONIC + +#endif // OS_POSIX_OS_POSIX_INLINE_HPP From 13a52f3a17645177499c1667a8ac327e7ca11b4b Mon Sep 17 00:00:00 2001 From: Nishit Jain Date: Wed, 6 Feb 2019 13:57:19 +0530 Subject: [PATCH 27/36] 8217969: Base64.Decoder.decode methods do not need to throw OOME due to integer overflow 8218265: java/util/Base64/TestEncodingDecodingLength.java failing Reviewed-by: rriggs, naoto --- .../share/classes/java/util/Base64.java | 40 ++++++++----------- .../Base64/TestEncodingDecodingLength.java | 25 +++++++----- 2 files changed, 30 insertions(+), 35 deletions(-) diff --git a/src/java.base/share/classes/java/util/Base64.java b/src/java.base/share/classes/java/util/Base64.java index 6ce6cef7c3f..d525e253d9b 100644 --- a/src/java.base/share/classes/java/util/Base64.java +++ b/src/java.base/share/classes/java/util/Base64.java @@ -251,7 +251,7 @@ public class Base64 { * @return length of the encoded bytes, or -1 if the length overflows * */ - private final int outLength(int srclen, boolean throwOOME) { + private final int encodedOutLength(int srclen, boolean throwOOME) { int len = 0; try { if (doPadding) { @@ -286,7 +286,7 @@ public class Base64 { * encoded bytes. */ public byte[] encode(byte[] src) { - int len = outLength(src.length, true); // dst array size + int len = encodedOutLength(src.length, true); // dst array size byte[] dst = new byte[len]; int ret = encode0(src, 0, src.length, dst); if (ret != dst.length) @@ -314,7 +314,7 @@ public class Base64 { * space for encoding all input bytes. */ public int encode(byte[] src, byte[] dst) { - int len = outLength(src.length, false); // dst array size + int len = encodedOutLength(src.length, false); // dst array size if (dst.length < len || len == -1) throw new IllegalArgumentException( "Output byte array is too small for encoding all input bytes"); @@ -359,7 +359,7 @@ public class Base64 { * @return A newly-allocated byte buffer containing the encoded bytes. */ public ByteBuffer encode(ByteBuffer buffer) { - int len = outLength(buffer.remaining(), true); + int len = encodedOutLength(buffer.remaining(), true); byte[] dst = new byte[len]; int ret = 0; if (buffer.hasArray()) { @@ -560,7 +560,7 @@ public class Base64 { * if {@code src} is not in valid Base64 scheme */ public byte[] decode(byte[] src) { - byte[] dst = new byte[outLength(src, 0, src.length, true)]; + byte[] dst = new byte[decodedOutLength(src, 0, src.length)]; int ret = decode0(src, 0, src.length, dst); if (ret != dst.length) { dst = Arrays.copyOf(dst, ret); @@ -613,7 +613,7 @@ public class Base64 { * does not have enough space for decoding all input bytes. */ public int decode(byte[] src, byte[] dst) { - int len = outLength(src, 0, src.length, false); + int len = decodedOutLength(src, 0, src.length); if (dst.length < len || len == -1) throw new IllegalArgumentException( "Output byte array is too small for decoding all input bytes"); @@ -657,7 +657,7 @@ public class Base64 { sp = 0; sl = src.length; } - byte[] dst = new byte[outLength(src, sp, sl, true)]; + byte[] dst = new byte[decodedOutLength(src, sp, sl)]; return ByteBuffer.wrap(dst, 0, decode0(src, sp, sl, dst)); } catch (IllegalArgumentException iae) { buffer.position(pos0); @@ -691,13 +691,11 @@ public class Base64 { * @param src the byte array to decode * @param sp the source position * @param sl the source limit - * @param throwOOME if true, throws OutOfMemoryError if the length of - * the decoded bytes overflows; else returns the - * length - * @return length of the decoded bytes, or -1 if the length overflows + * + * @return length of the decoded bytes * */ - private int outLength(byte[] src, int sp, int sl, boolean throwOOME) { + private int decodedOutLength(byte[] src, int sp, int sl) { int[] base64 = isURL ? fromBase64URL : fromBase64; int paddings = 0; int len = sl - sp; @@ -733,18 +731,12 @@ public class Base64 { if (paddings == 0 && (len & 0x3) != 0) paddings = 4 - (len & 0x3); - try { - len = Math.multiplyExact(3, (Math.addExact(len, 3) / 4)) - paddings; - } catch (ArithmeticException ex) { - if (throwOOME) { - throw new OutOfMemoryError("Decoded size is too large"); - } else { - // let the caller know that the decoded bytes length - // is too large - len = -1; - } - } - return len; + // If len is near to Integer.MAX_VALUE, (len + 3) + // can possibly overflow, perform this operation as + // long and cast it back to integer when the value comes under + // integer limit. The final value will always be in integer + // limits + return 3 * (int) ((len + 3L) / 4) - paddings; } private int decode0(byte[] src, int sp, int sl, byte[] dst) { diff --git a/test/jdk/java/util/Base64/TestEncodingDecodingLength.java b/test/jdk/java/util/Base64/TestEncodingDecodingLength.java index c64f6392202..3bac2781ac5 100644 --- a/test/jdk/java/util/Base64/TestEncodingDecodingLength.java +++ b/test/jdk/java/util/Base64/TestEncodingDecodingLength.java @@ -22,22 +22,23 @@ */ import java.nio.ByteBuffer; +import java.util.Arrays; import java.util.Base64; /** * @test - * @bug 8210583 - * @summary Tests Base64.Encoder.encode/Decoder.decode for the large size - * of resulting bytes which can not be allocated - * @requires os.maxMemory >= 6g - * @run main/othervm -Xms4g -Xmx6g TestEncodingDecodingLength + * @bug 8210583 8217969 8218265 + * @summary Tests Base64.Encoder.encode and Base64.Decoder.decode + * with the large size of input array/buffer + * @requires os.maxMemory >= 8g + * @run main/othervm -Xms6g -Xmx8g TestEncodingDecodingLength * */ public class TestEncodingDecodingLength { public static void main(String[] args) { - int size = Integer.MAX_VALUE - 2; + int size = Integer.MAX_VALUE - 8; byte[] inputBytes = new byte[size]; byte[] outputBytes = new byte[size]; @@ -46,13 +47,15 @@ public class TestEncodingDecodingLength { checkOOM("encode(byte[])", () -> encoder.encode(inputBytes)); checkIAE("encode(byte[] byte[])", () -> encoder.encode(inputBytes, outputBytes)); checkOOM("encodeToString(byte[])", () -> encoder.encodeToString(inputBytes)); - checkOOM("encode(ByteBuffer)", () -> encoder.encode(ByteBuffer.allocate(size))); + checkOOM("encode(ByteBuffer)", () -> encoder.encode(ByteBuffer.wrap(inputBytes))); - // Check decoder with large array length + // Check decoder with large array length, + // should not throw any exception + Arrays.fill(inputBytes, (byte) 86); Base64.Decoder decoder = Base64.getDecoder(); - checkOOM("decode(byte[])", () -> decoder.decode(inputBytes)); - checkIAE("decode(byte[], byte[])", () -> decoder.decode(inputBytes, outputBytes)); - checkOOM("decode(ByteBuffer)", () -> decoder.decode(ByteBuffer.allocate(size))); + decoder.decode(inputBytes); + decoder.decode(inputBytes, outputBytes); + decoder.decode(ByteBuffer.wrap(inputBytes)); } private static final void checkOOM(String methodName, Runnable r) { From 38463aa95937e18fbdc4a9585eef9928a42f3be9 Mon Sep 17 00:00:00 2001 From: Matthias Baesken Date: Mon, 28 Jan 2019 16:42:23 +0100 Subject: [PATCH 28/36] 8217093: Support extended-length paths in parse_manifest.c on windows Reviewed-by: chegar, clanger --- src/java.base/share/native/libjli/jli_util.h | 6 +- .../share/native/libjli/parse_manifest.c | 10 ++-- src/java.base/windows/native/libjli/java_md.c | 55 ++++++++++++++++++- 3 files changed, 64 insertions(+), 7 deletions(-) diff --git a/src/java.base/share/native/libjli/jli_util.h b/src/java.base/share/native/libjli/jli_util.h index b8987010f31..402a06ef818 100644 --- a/src/java.base/share/native/libjli/jli_util.h +++ b/src/java.base/share/native/libjli/jli_util.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -89,7 +89,8 @@ JLI_GetAppArgIndex(); #include #define JLI_StrCaseCmp(p1, p2) stricmp((p1), (p2)) #define JLI_StrNCaseCmp(p1, p2, p3) strnicmp((p1), (p2), (p3)) -int JLI_Snprintf(char *buffer, size_t size, const char *format, ...); +int JLI_Snprintf(char *buffer, size_t size, const char *format, ...); +int JLI_Open(const char* name, int flags); JNIEXPORT void JNICALL JLI_CmdToArgs(char *cmdline); #define JLI_Lseek _lseeki64 @@ -101,6 +102,7 @@ JLI_CmdToArgs(char *cmdline); #define JLI_StrCaseCmp(p1, p2) strcasecmp((p1), (p2)) #define JLI_StrNCaseCmp(p1, p2, p3) strncasecmp((p1), (p2), (p3)) #define JLI_Snprintf snprintf +#define JLI_Open open #define JLI_PutEnv putenv #define JLI_GetPid getpid #ifdef __solaris__ diff --git a/src/java.base/share/native/libjli/parse_manifest.c b/src/java.base/share/native/libjli/parse_manifest.c index 4f9f23c1920..2889fab0686 100644 --- a/src/java.base/share/native/libjli/parse_manifest.c +++ b/src/java.base/share/native/libjli/parse_manifest.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -362,9 +362,11 @@ find_file(int fd, zentry *entry, const char *file_name) bp = buffer; if (find_positions(fd, bp, &base_offset, &censtart) == -1) { + free(buffer); return -1; } if (JLI_Lseek(fd, censtart, SEEK_SET) < (jlong) 0) { + free(buffer); return -1; } @@ -583,7 +585,7 @@ JLI_ParseManifest(char *jarfile, manifest_info *info) int rc; char *splashscreen_name = NULL; - if ((fd = open(jarfile, O_RDONLY + if ((fd = JLI_Open(jarfile, O_RDONLY #ifdef O_LARGEFILE | O_LARGEFILE /* large file mode */ #endif @@ -640,7 +642,7 @@ JLI_JarUnpackFile(const char *jarfile, const char *filename, int *size) { zentry entry; void *data = NULL; - if ((fd = open(jarfile, O_RDONLY + if ((fd = JLI_Open(jarfile, O_RDONLY #ifdef O_LARGEFILE | O_LARGEFILE /* large file mode */ #endif @@ -688,7 +690,7 @@ JLI_ManifestIterate(const char *jarfile, attribute_closure ac, void *user_data) char *value; int rc; - if ((fd = open(jarfile, O_RDONLY + if ((fd = JLI_Open(jarfile, O_RDONLY #ifdef O_LARGEFILE | O_LARGEFILE /* large file mode */ #endif diff --git a/src/java.base/windows/native/libjli/java_md.c b/src/java.base/windows/native/libjli/java_md.c index f1458675594..36f59f9e781 100644 --- a/src/java.base/windows/native/libjli/java_md.c +++ b/src/java.base/windows/native/libjli/java_md.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,6 +41,8 @@ #define JVM_DLL "jvm.dll" #define JAVA_DLL "java.dll" +#define ELP_PREFIX L"\\\\?\\" + /* * Prototypes. */ @@ -495,6 +497,57 @@ JLI_Snprintf(char* buffer, size_t size, const char* format, ...) { return rc; } +/* On Windows, if _open fails, retry again with CreateFileW and + * "\\?\" prefix ( extended-length paths) - this allows to open paths with larger file names; + * otherwise we run into the MAX_PATH limitation */ +int JLI_Open(const char* name, int flags) { + int fd = _open(name, flags); + if (fd == -1 && errno == ENOENT) { + wchar_t* wname = NULL; + wchar_t* wfullname = NULL; + wchar_t* wfullname_w_prefix = NULL; + size_t wnamelen, wfullnamelen, elplen; + HANDLE h; + + wnamelen = strlen(name) + 1; + wname = (wchar_t*) malloc(wnamelen*sizeof(wchar_t)); + if (wname == NULL) { + goto end; + } + if (mbstowcs(wname, name, wnamelen - 1) == -1) { + goto end; + } + wname[wnamelen - 1] = L'\0'; + wfullname = _wfullpath(wfullname, wname, 0); + if (wfullname == NULL) { + goto end; + } + + wfullnamelen = wcslen(wfullname); + if (wfullnamelen > 247) { + elplen = wcslen(ELP_PREFIX); + wfullname_w_prefix = (wchar_t*) malloc((elplen+wfullnamelen+1)*sizeof(wchar_t)); + wcscpy(wfullname_w_prefix, ELP_PREFIX); + wcscpy(wfullname_w_prefix+elplen, wfullname); + + h = CreateFileW(wfullname_w_prefix, GENERIC_READ, FILE_SHARE_READ, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (h == INVALID_HANDLE_VALUE) { + goto end; + } + /* associates fd with handle */ + fd = _open_osfhandle((intptr_t)h, _O_RDONLY); + } +end: + free(wname); + free(wfullname); + free(wfullname_w_prefix); + } + return fd; +} + + + JNIEXPORT void JNICALL JLI_ReportErrorMessage(const char* fmt, ...) { va_list vl; From 16d8bc90878116221014b616edc38c725404eebc Mon Sep 17 00:00:00 2001 From: Goetz Lindenmaier Date: Wed, 6 Feb 2019 08:31:27 +0100 Subject: [PATCH 29/36] 8218544: Fix build on windows: missing include Reviewed-by: stuefe, dholmes, shade --- src/hotspot/share/compiler/disassembler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hotspot/share/compiler/disassembler.cpp b/src/hotspot/share/compiler/disassembler.cpp index 0d67201f28c..761ade4f6b0 100644 --- a/src/hotspot/share/compiler/disassembler.cpp +++ b/src/hotspot/share/compiler/disassembler.cpp @@ -34,7 +34,7 @@ #include "memory/resourceArea.hpp" #include "oops/oop.inline.hpp" #include "runtime/handles.inline.hpp" -#include "runtime/os.hpp" +#include "runtime/os.inline.hpp" #include "runtime/stubCodeGenerator.hpp" #include "runtime/stubRoutines.hpp" #include "utilities/resourceHash.hpp" From 42f34d1076f96a1fd18ea22aedf260ce4af74686 Mon Sep 17 00:00:00 2001 From: Pengfei Li Date: Wed, 6 Feb 2019 16:25:58 +0000 Subject: [PATCH 30/36] 8218550: Add test omitted from JDK-8212043 Add test case omitted from fix for JDK-8212043 Reviewed-by: shade --- .../math/TestFpMinMaxIntrinsics.java | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 test/hotspot/jtreg/compiler/intrinsics/math/TestFpMinMaxIntrinsics.java diff --git a/test/hotspot/jtreg/compiler/intrinsics/math/TestFpMinMaxIntrinsics.java b/test/hotspot/jtreg/compiler/intrinsics/math/TestFpMinMaxIntrinsics.java new file mode 100644 index 00000000000..9fe71a2d772 --- /dev/null +++ b/test/hotspot/jtreg/compiler/intrinsics/math/TestFpMinMaxIntrinsics.java @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, Arm Limited. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please 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 8212043 + * @summary Test compiler intrinsics of floating-point Math.min/max + * + * @run main/othervm -Xint compiler.intrinsics.math.TestFpMinMaxIntrinsics + * @run main/othervm -XX:+UnlockDiagnosticVMOptions + * -Xcomp -XX:TieredStopAtLevel=1 + * -XX:CompileOnly=java/lang/Math + * compiler.intrinsics.math.TestFpMinMaxIntrinsics + * @run main/othervm -XX:+UnlockDiagnosticVMOptions + * -Xcomp -XX:-TieredCompilation + * -XX:CompileOnly=java/lang/Math + * compiler.intrinsics.math.TestFpMinMaxIntrinsics + */ + +package compiler.intrinsics.math; + +import java.util.Arrays; + +public class TestFpMinMaxIntrinsics { + + private static final float fPos = 15280.0f; + private static final float fNeg = -55555.5f; + private static final float fPosZero = 0.0f; + private static final float fNegZero = -0.0f; + private static final float fPosInf = Float.POSITIVE_INFINITY; + private static final float fNegInf = Float.NEGATIVE_INFINITY; + private static final float fNaN = Float.NaN; + + private static final double dPos = 482390926662501720.0; + private static final double dNeg = -333333333333333333.3; + private static final double dPosZero = 0.0; + private static final double dNegZero = -0.0; + private static final double dPosInf = Double.POSITIVE_INFINITY; + private static final double dNegInf = Double.NEGATIVE_INFINITY; + private static final double dNaN = Double.NaN; + + private static final float[][] f_cases = { + // a b min max + { fPos, fPos, fPos, fPos }, + { fPos, fNeg, fNeg, fPos }, + { fPosZero, fNegZero, fNegZero, fPosZero }, + { fNegZero, fNegZero, fNegZero, fNegZero }, + { fPos, fPosInf, fPos, fPosInf }, + { fNeg, fNegInf, fNegInf, fNeg }, + { fPos, fNaN, fNaN, fNaN }, + { fNegInf, fNaN, fNaN, fNaN }, + }; + + private static final double[][] d_cases = { + // a b min max + { dPos, dPos, dPos, dPos }, + { dPos, dNeg, dNeg, dPos }, + { dPosZero, dNegZero, dNegZero, dPosZero }, + { dNegZero, dNegZero, dNegZero, dNegZero }, + { dPos, dPosInf, dPos, dPosInf }, + { dNeg, dNegInf, dNegInf, dNeg }, + { dPos, dNaN, dNaN, dNaN }, + { dNegInf, dNaN, dNaN, dNaN }, + }; + + private static void fTest(float[] row) { + float min = Math.min(row[0], row[1]); + float max = Math.max(row[0], row[1]); + if (Float.isNaN(min) && Float.isNaN(max) + && Float.isNaN(row[2]) && Float.isNaN(row[3])) { + // Return if all of them are NaN + return; + } + if (min != row[2] || max != row[3]) { + throw new AssertionError("Unexpected result of float min/max: " + + "a = " + row[0] + ", b = " + row[1] + ", " + + "result = (" + min + ", " + max + "), " + + "expected = (" + row[2] + ", " + row[3] + ")"); + } + } + + private static void dTest(double[] row) { + double min = Math.min(row[0], row[1]); + double max = Math.max(row[0], row[1]); + if (Double.isNaN(min) && Double.isNaN(max) + && Double.isNaN(row[2]) && Double.isNaN(row[3])) { + // Return if all of them are NaN + return; + } + if (min != row[2] || max != row[3]) { + throw new AssertionError("Unexpected result of double min/max" + + "a = " + row[0] + ", b = " + row[1] + ", " + + "result = (" + min + ", " + max + "), " + + "expected = (" + row[2] + ", " + row[3] + ")"); + } + } + + public static void main(String[] args) { + Arrays.stream(f_cases).forEach(TestFpMinMaxIntrinsics::fTest); + Arrays.stream(d_cases).forEach(TestFpMinMaxIntrinsics::dTest); + System.out.println("PASS"); + } +} + From 216049dc4785411c57322c9a5b24989b2091650e Mon Sep 17 00:00:00 2001 From: Zhengyu Gu Date: Wed, 6 Feb 2019 13:30:27 -0500 Subject: [PATCH 31/36] 8218566: NMT: missing memory tag for assert poison page Reviewed-by: shade, stuefe --- src/hotspot/share/utilities/debug.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/hotspot/share/utilities/debug.cpp b/src/hotspot/share/utilities/debug.cpp index 4b05ed68d08..e7486bbb88e 100644 --- a/src/hotspot/share/utilities/debug.cpp +++ b/src/hotspot/share/utilities/debug.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,6 +34,7 @@ #include "gc/shared/collectedHeap.hpp" #include "interpreter/bytecodeHistogram.hpp" #include "interpreter/interpreter.hpp" +#include "memory/allocation.hpp" #include "memory/resourceArea.hpp" #include "memory/universe.hpp" #include "oops/oop.inline.hpp" @@ -51,6 +52,7 @@ #include "runtime/vframe.hpp" #include "runtime/vm_version.hpp" #include "services/heapDumper.hpp" +#include "services/memTracker.hpp" #include "utilities/defaultStream.hpp" #include "utilities/events.hpp" #include "utilities/formatBuffer.hpp" @@ -721,6 +723,7 @@ static ucontext_t g_stored_assertion_context; void initialize_assert_poison() { char* page = os::reserve_memory(os::vm_page_size()); if (page) { + MemTracker::record_virtual_memory_type(page, mtInternal); if (os::commit_memory(page, os::vm_page_size(), false) && os::protect_memory(page, os::vm_page_size(), os::MEM_PROT_NONE)) { g_assert_poison = page; From 752bd3d9558816c295e68c474327d86415934326 Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Wed, 6 Feb 2019 10:53:13 -0800 Subject: [PATCH 32/36] 8218419: Can't get annotations that are present on packages in -Xbootclasspath/a Reviewed-by: alanb --- .../internal/loader/BuiltinClassLoader.java | 4 +- .../jdk/internal/loader/ClassLoaders.java | 4 +- .../GetPackageFromBootClassPath.java | 67 +++++++++++++++++++ .../Package/bootclasspath/boot/foo/Foo.java | 27 ++++++++ .../bootclasspath/boot/foo/MyAnnotation.java | 34 ++++++++++ .../bootclasspath/boot/foo/package-info.java | 25 +++++++ 6 files changed, 157 insertions(+), 4 deletions(-) create mode 100644 test/jdk/java/lang/Package/bootclasspath/GetPackageFromBootClassPath.java create mode 100644 test/jdk/java/lang/Package/bootclasspath/boot/foo/Foo.java create mode 100644 test/jdk/java/lang/Package/bootclasspath/boot/foo/MyAnnotation.java create mode 100644 test/jdk/java/lang/Package/bootclasspath/boot/foo/package-info.java diff --git a/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java b/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java index 8e2639517d2..03e63302148 100644 --- a/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java +++ b/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -638,7 +638,7 @@ public class BuiltinClassLoader * binary name. This method returns {@code null} when the class is not * found. */ - protected Class loadClassOrNull(String cn) { + protected final Class loadClassOrNull(String cn) { return loadClassOrNull(cn, false); } diff --git a/src/java.base/share/classes/jdk/internal/loader/ClassLoaders.java b/src/java.base/share/classes/jdk/internal/loader/ClassLoaders.java index cde32e9788a..27cd71359f7 100644 --- a/src/java.base/share/classes/jdk/internal/loader/ClassLoaders.java +++ b/src/java.base/share/classes/jdk/internal/loader/ClassLoaders.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -114,7 +114,7 @@ public class ClassLoaders { } @Override - protected Class loadClassOrNull(String cn) { + protected Class loadClassOrNull(String cn, boolean resolve) { return JLA.findBootstrapClassOrNull(this, cn); } }; diff --git a/test/jdk/java/lang/Package/bootclasspath/GetPackageFromBootClassPath.java b/test/jdk/java/lang/Package/bootclasspath/GetPackageFromBootClassPath.java new file mode 100644 index 00000000000..c73e87586c5 --- /dev/null +++ b/test/jdk/java/lang/Package/bootclasspath/GetPackageFromBootClassPath.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8218419 + * @library /test/lib + * @modules jdk.compiler + * @build jdk.test.lib.compiler.CompilerUtils + * @run driver GetPackageFromBootClassPath setup + * @run main/othervm -Xbootclasspath/a:boot GetPackageFromBootClassPath + */ + +import java.lang.annotation.Annotation; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; + +public class GetPackageFromBootClassPath { + public static void main(String... args) throws Exception { + if (args.length == 0) { + test(); + } else { + setupBootLib(); + } + } + + private static void test() throws Exception { + Class c = Class.forName("foo.Foo", false, null); + Package p = c.getPackage(); + Annotation[] annotations = p.getAnnotations(); + Class annType = Class.forName("foo.MyAnnotation", false, null); + if (annotations.length != 1 || + annotations[0].annotationType() != annType) { + throw new RuntimeException("Expected foo.MyAnnotation but got " + + Arrays.toString(annotations)); + } + } + + private static void setupBootLib() throws Exception { + Path testSrc = Paths.get(System.getProperty("test.src"), "boot"); + Path bootDir = Paths.get("boot"); + if (!jdk.test.lib.compiler.CompilerUtils.compile(testSrc, bootDir)) { + throw new RuntimeException("compilation fails"); + } + } +} diff --git a/test/jdk/java/lang/Package/bootclasspath/boot/foo/Foo.java b/test/jdk/java/lang/Package/bootclasspath/boot/foo/Foo.java new file mode 100644 index 00000000000..492d03b5fb0 --- /dev/null +++ b/test/jdk/java/lang/Package/bootclasspath/boot/foo/Foo.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package foo; + +public class Foo { +} diff --git a/test/jdk/java/lang/Package/bootclasspath/boot/foo/MyAnnotation.java b/test/jdk/java/lang/Package/bootclasspath/boot/foo/MyAnnotation.java new file mode 100644 index 00000000000..dafeef4efd0 --- /dev/null +++ b/test/jdk/java/lang/Package/bootclasspath/boot/foo/MyAnnotation.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package foo; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.PACKAGE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MyAnnotation { +} diff --git a/test/jdk/java/lang/Package/bootclasspath/boot/foo/package-info.java b/test/jdk/java/lang/Package/bootclasspath/boot/foo/package-info.java new file mode 100644 index 00000000000..4a6b6204560 --- /dev/null +++ b/test/jdk/java/lang/Package/bootclasspath/boot/foo/package-info.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +@MyAnnotation +package foo; From 9c2e3cffb6bcfaa64d135a01e5a0af59aa5d3c48 Mon Sep 17 00:00:00 2001 From: Harold Seigel Date: Wed, 6 Feb 2019 15:11:59 -0500 Subject: [PATCH 33/36] 8218579: add hotspot/jtreg/runtime/CompressedOops/UseCompressedOops.java to ProblemList.txt Add the test to ProblemList.txt for windows-all Reviewed-by: dcubed --- test/hotspot/jtreg/ProblemList.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/test/hotspot/jtreg/ProblemList.txt b/test/hotspot/jtreg/ProblemList.txt index e2acd2220dc..559b1efb0f5 100644 --- a/test/hotspot/jtreg/ProblemList.txt +++ b/test/hotspot/jtreg/ProblemList.txt @@ -82,6 +82,7 @@ gc/metaspace/CompressedClassSpaceSizeInJmapHeap.java 8193639 solaris-all runtime/handshake/HandshakeWalkSuspendExitTest.java 8214174 generic-all runtime/SharedArchiveFile/SASymbolTableTest.java 8193639 solaris-all +runtime/CompressedOops/UseCompressedOops.java 8079353 windows-all ############################################################################# From 007d3c0143bd6a9001609df0c09bb3ee592e1238 Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Wed, 6 Feb 2019 15:09:05 -0800 Subject: [PATCH 34/36] 8218461: test/jdk/java/lang/invoke/VarHandles should be generated rather than manually edited Reviewed-by: bpb, vromero --- .../invoke/VarHandles/VarHandleTestAccessBoolean.java | 7 ++----- .../invoke/VarHandles/VarHandleTestAccessByte.java | 7 ++----- .../invoke/VarHandles/VarHandleTestAccessChar.java | 7 ++----- .../invoke/VarHandles/VarHandleTestAccessDouble.java | 7 ++----- .../invoke/VarHandles/VarHandleTestAccessFloat.java | 7 ++----- .../invoke/VarHandles/VarHandleTestAccessInt.java | 7 ++----- .../invoke/VarHandles/VarHandleTestAccessLong.java | 7 ++----- .../invoke/VarHandles/VarHandleTestAccessShort.java | 7 ++----- .../invoke/VarHandles/VarHandleTestAccessString.java | 7 ++----- .../VarHandles/VarHandleTestByteArrayAsChar.java | 7 ++----- .../VarHandles/VarHandleTestByteArrayAsDouble.java | 7 ++----- .../VarHandles/VarHandleTestByteArrayAsFloat.java | 7 ++----- .../VarHandles/VarHandleTestByteArrayAsInt.java | 7 ++----- .../VarHandles/VarHandleTestByteArrayAsLong.java | 7 ++----- .../VarHandles/VarHandleTestByteArrayAsShort.java | 7 ++----- .../VarHandles/X-VarHandleTestAccess.java.template | 11 +++-------- .../X-VarHandleTestByteArrayView.java.template | 11 +++-------- 17 files changed, 36 insertions(+), 91 deletions(-) diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java index 24c03d6d977..61cd480a63d 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java @@ -133,16 +133,13 @@ public class VarHandleTestAccessBoolean extends VarHandleBaseTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = allocate(true); VarHandle[] vhs2 = allocate(true); for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessByte.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessByte.java index baa071d82b2..4ea18dff4bc 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessByte.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessByte.java @@ -133,16 +133,13 @@ public class VarHandleTestAccessByte extends VarHandleBaseTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = allocate(true); VarHandle[] vhs2 = allocate(true); for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessChar.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessChar.java index f2f67269841..123010c029a 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessChar.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessChar.java @@ -133,16 +133,13 @@ public class VarHandleTestAccessChar extends VarHandleBaseTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = allocate(true); VarHandle[] vhs2 = allocate(true); for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessDouble.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessDouble.java index 6853e4a197b..3bce630ed49 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessDouble.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessDouble.java @@ -133,16 +133,13 @@ public class VarHandleTestAccessDouble extends VarHandleBaseTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = allocate(true); VarHandle[] vhs2 = allocate(true); for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessFloat.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessFloat.java index 91231559ad5..9acc7690d04 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessFloat.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessFloat.java @@ -133,16 +133,13 @@ public class VarHandleTestAccessFloat extends VarHandleBaseTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = allocate(true); VarHandle[] vhs2 = allocate(true); for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessInt.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessInt.java index 7f9e1109492..6b3198a7628 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessInt.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessInt.java @@ -133,16 +133,13 @@ public class VarHandleTestAccessInt extends VarHandleBaseTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = allocate(true); VarHandle[] vhs2 = allocate(true); for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessLong.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessLong.java index 7baaa2b8318..3481a94e035 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessLong.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessLong.java @@ -133,16 +133,13 @@ public class VarHandleTestAccessLong extends VarHandleBaseTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = allocate(true); VarHandle[] vhs2 = allocate(true); for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessShort.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessShort.java index de40b4bb85b..1e3a193fc4e 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessShort.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessShort.java @@ -133,16 +133,13 @@ public class VarHandleTestAccessShort extends VarHandleBaseTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = allocate(true); VarHandle[] vhs2 = allocate(true); for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessString.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessString.java index 622f3e8b5aa..9ca01d37435 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessString.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessString.java @@ -135,16 +135,13 @@ public class VarHandleTestAccessString extends VarHandleBaseTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = allocate(true); VarHandle[] vhs2 = allocate(true); for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java index d8bc1c56c40..d7439671fcb 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsChar.java @@ -83,7 +83,7 @@ public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = setupVarHandleSources(true).stream(). map(vhs -> vhs.s).toArray(VarHandle[]::new); VarHandle[] vhs2 = setupVarHandleSources(true).stream(). @@ -91,10 +91,7 @@ public class VarHandleTestByteArrayAsChar extends VarHandleBaseByteArrayTest { for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java index b4e8febf8bf..943b1b3a612 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsDouble.java @@ -83,7 +83,7 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = setupVarHandleSources(true).stream(). map(vhs -> vhs.s).toArray(VarHandle[]::new); VarHandle[] vhs2 = setupVarHandleSources(true).stream(). @@ -91,10 +91,7 @@ public class VarHandleTestByteArrayAsDouble extends VarHandleBaseByteArrayTest { for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java index 147db0721b7..4c1c9c9aa36 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsFloat.java @@ -83,7 +83,7 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = setupVarHandleSources(true).stream(). map(vhs -> vhs.s).toArray(VarHandle[]::new); VarHandle[] vhs2 = setupVarHandleSources(true).stream(). @@ -91,10 +91,7 @@ public class VarHandleTestByteArrayAsFloat extends VarHandleBaseByteArrayTest { for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java index 3c97c869315..145a5b8e2bd 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsInt.java @@ -83,7 +83,7 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = setupVarHandleSources(true).stream(). map(vhs -> vhs.s).toArray(VarHandle[]::new); VarHandle[] vhs2 = setupVarHandleSources(true).stream(). @@ -91,10 +91,7 @@ public class VarHandleTestByteArrayAsInt extends VarHandleBaseByteArrayTest { for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java index 0c67073d8c3..3192d5aff29 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsLong.java @@ -83,7 +83,7 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = setupVarHandleSources(true).stream(). map(vhs -> vhs.s).toArray(VarHandle[]::new); VarHandle[] vhs2 = setupVarHandleSources(true).stream(). @@ -91,10 +91,7 @@ public class VarHandleTestByteArrayAsLong extends VarHandleBaseByteArrayTest { for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java index 223c6d09984..cca86995229 100644 --- a/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java +++ b/test/jdk/java/lang/invoke/VarHandles/VarHandleTestByteArrayAsShort.java @@ -83,7 +83,7 @@ public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = setupVarHandleSources(true).stream(). map(vhs -> vhs.s).toArray(VarHandle[]::new); VarHandle[] vhs2 = setupVarHandleSources(true).stream(). @@ -91,10 +91,7 @@ public class VarHandleTestByteArrayAsShort extends VarHandleBaseByteArrayTest { for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestAccess.java.template b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestAccess.java.template index 0e1ff3fb673..de4b4fd7890 100644 --- a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestAccess.java.template +++ b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestAccess.java.template @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -143,18 +143,13 @@ public class VarHandleTestAccess$Type$ extends VarHandleBaseTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = allocate(true); VarHandle[] vhs2 = allocate(true); for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - assertEquals(vhs1[i], vhs2[i]); - assertEquals(vhs1[i].hashCode(), vhs2[i].hashCode()); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } diff --git a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template index 90016864da2..9c7246f2184 100644 --- a/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template +++ b/test/jdk/java/lang/invoke/VarHandles/X-VarHandleTestByteArrayView.java.template @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -87,7 +87,7 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest { } @Test - public void testEqualsAndHashCode() { + public void testEquals() { VarHandle[] vhs1 = setupVarHandleSources(true).stream(). map(vhs -> vhs.s).toArray(VarHandle[]::new); VarHandle[] vhs2 = setupVarHandleSources(true).stream(). @@ -95,12 +95,7 @@ public class VarHandleTestByteArrayAs$Type$ extends VarHandleBaseByteArrayTest { for (int i = 0; i < vhs1.length; i++) { for (int j = 0; j < vhs1.length; j++) { - if (i == j) { - assertEquals(vhs1[i], vhs1[i]); - assertEquals(vhs1[i], vhs2[i]); - assertEquals(vhs1[i].hashCode(), vhs2[i].hashCode()); - } - else { + if (i != j) { assertNotEquals(vhs1[i], vhs1[j]); assertNotEquals(vhs1[i], vhs2[j]); } From 7d380da9409db5fa674cbb03a93869109749bd33 Mon Sep 17 00:00:00 2001 From: Jesper Wilhelmsson Date: Thu, 7 Feb 2019 02:48:11 +0100 Subject: [PATCH 35/36] Added tag jdk-13+7 for changeset 021917019cda --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 52b21145d8b..5e59218d834 100644 --- a/.hgtags +++ b/.hgtags @@ -540,3 +540,4 @@ e3ed960609927b5fdfd0a797159835cd83a81a31 jdk-13+5 44f41693631f9b5ac78ff4d2bfabd6734fe46df2 jdk-12+29 b5f05fe4a6f8b3996a000c20078b356d991ca8ec jdk-13+6 6c377af36a5c4203f16aed8a5e4c2ecc08fcd8bd jdk-12+30 +021917019cda1c0c5853255322274f37693a2431 jdk-13+7 From ecb711dbe96720e63a87fc0e16f5a70cc386e386 Mon Sep 17 00:00:00 2001 From: Mikael Vidstedt Date: Wed, 6 Feb 2019 18:34:12 -0800 Subject: [PATCH 36/36] 8218581: Incorrect exception message generation Reviewed-by: hseigel --- src/hotspot/share/classfile/modules.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hotspot/share/classfile/modules.cpp b/src/hotspot/share/classfile/modules.cpp index 3386faa12e9..cf54eef62e2 100644 --- a/src/hotspot/share/classfile/modules.cpp +++ b/src/hotspot/share/classfile/modules.cpp @@ -334,8 +334,8 @@ void Modules::define_module(jobject module, jboolean is_open, jstring version, (package_name[JAVAPKG_LEN] == '/' || package_name[JAVAPKG_LEN] == '\0'))) { const char* class_loader_name = loader_data->loader_name_and_id(); size_t pkg_len = strlen(package_name); - char* pkg_name = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, pkg_len); - strncpy(pkg_name, package_name, pkg_len); + char* pkg_name = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, pkg_len + 1); + strncpy(pkg_name, package_name, pkg_len + 1); StringUtils::replace_no_expand(pkg_name, "/", "."); const char* msg_text1 = "Class loader (instance of): "; const char* msg_text2 = " tried to define prohibited package name: ";