From e9f0b9af4a914228ab4bb70d779649010264763b Mon Sep 17 00:00:00 2001 From: Jungwoo Ha Date: Wed, 16 Oct 2013 15:14:37 -0700 Subject: [PATCH 001/145] 8024954: CMS: CMSClassUnloadingMaxInterval is not implemented correctly. This change is also part of the fix for 8024483 Reviewed-by: mgerdin, brutisso, tschatzl --- .../concurrentMarkSweepGeneration.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp index bf4ac21e346..97437bfafe2 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp @@ -594,9 +594,9 @@ CMSCollector::CMSCollector(ConcurrentMarkSweepGeneration* cmsGen, _verification_mark_bm(0, Mutex::leaf + 1, "CMS_verification_mark_bm_lock"), _completed_initialization(false), _collector_policy(cp), - _should_unload_classes(false), + _should_unload_classes(CMSClassUnloadingEnabled), _concurrent_cycles_since_last_unload(0), - _roots_scanning_options(0), + _roots_scanning_options(SharedHeap::SO_None), _inter_sweep_estimate(CMS_SweepWeight, CMS_SweepPadding), _intra_sweep_estimate(CMS_SweepWeight, CMS_SweepPadding), _gc_tracer_cm(new (ResourceObj::C_HEAP, mtGC) CMSTracer()), @@ -788,14 +788,6 @@ CMSCollector::CMSCollector(ConcurrentMarkSweepGeneration* cmsGen, && _survivor_chunk_index == 0), "Error"); - // Choose what strong roots should be scanned depending on verification options - if (!CMSClassUnloadingEnabled) { - // If class unloading is disabled we want to include all classes into the root set. - add_root_scanning_option(SharedHeap::SO_AllClasses); - } else { - add_root_scanning_option(SharedHeap::SO_SystemClasses); - } - NOT_PRODUCT(_overflow_counter = CMSMarkStackOverflowInterval;) _gc_counters = new CollectorCounters("CMS", 1); _completed_initialization = true; @@ -3310,7 +3302,10 @@ void CMSCollector::setup_cms_unloading_and_verification_state() { || VerifyBeforeExit; const int rso = SharedHeap::SO_Strings | SharedHeap::SO_CodeCache; + // We set the proper root for this CMS cycle here. if (should_unload_classes()) { // Should unload classes this cycle + remove_root_scanning_option(SharedHeap::SO_AllClasses); + add_root_scanning_option(SharedHeap::SO_SystemClasses); remove_root_scanning_option(rso); // Shrink the root set appropriately set_verifying(should_verify); // Set verification state for this cycle return; // Nothing else needs to be done at this time @@ -3318,6 +3313,9 @@ void CMSCollector::setup_cms_unloading_and_verification_state() { // Not unloading classes this cycle assert(!should_unload_classes(), "Inconsitency!"); + remove_root_scanning_option(SharedHeap::SO_SystemClasses); + add_root_scanning_option(SharedHeap::SO_AllClasses); + if ((!verifying() || unloaded_classes_last_cycle()) && should_verify) { // Include symbols, strings and code cache elements to prevent their resurrection. add_root_scanning_option(rso); From 1123a5596ce984f13e4385cffbe246cd12fa67fa Mon Sep 17 00:00:00 2001 From: Jesper Wilhelmsson Date: Mon, 21 Oct 2013 18:51:37 +0200 Subject: [PATCH 002/145] 8026851: Remove unnecessary code in GenRemSet Removed the GenRemSet::rem_set_name() since we only have one remset. Reviewed-by: stefank, mgerdin, tschatzl --- hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp | 2 +- hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp | 2 -- hotspot/src/share/vm/memory/collectorPolicy.cpp | 1 - hotspot/src/share/vm/memory/collectorPolicy.hpp | 2 -- 4 files changed, 1 insertion(+), 6 deletions(-) diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp index 92eee2e8eb9..ad1dce1750b 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp @@ -320,7 +320,7 @@ G1CollectorPolicy::G1CollectorPolicy() : void G1CollectorPolicy::initialize_flags() { _min_alignment = HeapRegion::GrainBytes; - size_t card_table_alignment = GenRemSet::max_alignment_constraint(rem_set_name()); + size_t card_table_alignment = GenRemSet::max_alignment_constraint(GenRemSet::CardTable); size_t page_size = UseLargePages ? os::large_page_size() : os::vm_page_size(); _max_alignment = MAX3(card_table_alignment, _min_alignment, page_size); if (SurvivorRatio < 1) { diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp index a497f2fa3b6..d5bdc08698f 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp @@ -665,8 +665,6 @@ public: BarrierSet::Name barrier_set_name() { return BarrierSet::G1SATBCTLogging; } - GenRemSet::Name rem_set_name() { return GenRemSet::CardTable; } - bool need_to_start_conc_mark(const char* source, size_t alloc_word_size = 0); // Record the start and end of an evacuation pause. diff --git a/hotspot/src/share/vm/memory/collectorPolicy.cpp b/hotspot/src/share/vm/memory/collectorPolicy.cpp index a3c466327ef..d6c4afe2f01 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.cpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.cpp @@ -105,7 +105,6 @@ bool CollectorPolicy::use_should_clear_all_soft_refs(bool v) { GenRemSet* CollectorPolicy::create_rem_set(MemRegion whole_heap, int max_covered_regions) { - assert(rem_set_name() == GenRemSet::CardTable, "unrecognized GenRemSet::Name"); return new CardTableRS(whole_heap, max_covered_regions); } diff --git a/hotspot/src/share/vm/memory/collectorPolicy.hpp b/hotspot/src/share/vm/memory/collectorPolicy.hpp index 42976b34563..a86f45c54d7 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.hpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.hpp @@ -151,7 +151,6 @@ class CollectorPolicy : public CHeapObj { virtual BarrierSet::Name barrier_set_name() = 0; - virtual GenRemSet::Name rem_set_name() = 0; // Create the remembered set (to cover the given reserved region, // allowing breaking up into at most "max_covered_regions"). @@ -303,7 +302,6 @@ class TwoGenerationCollectorPolicy : public GenCollectorPolicy { int number_of_generations() { return 2; } BarrierSet::Name barrier_set_name() { return BarrierSet::CardTableModRef; } - GenRemSet::Name rem_set_name() { return GenRemSet::CardTable; } virtual CollectorPolicy::Name kind() { return CollectorPolicy::TwoGenerationCollectorPolicyKind; From 5976b6915a7936491afed94515031cded77e83c2 Mon Sep 17 00:00:00 2001 From: Jesper Wilhelmsson Date: Mon, 21 Oct 2013 18:52:13 +0200 Subject: [PATCH 003/145] 8026852: Use restricted_align_down in collector policy code Moved restricted_align_down to globalDefinitions and renamed it align_size_down_bounded Reviewed-by: stefank, mgerdin, tschatzl --- hotspot/src/share/vm/memory/collectorPolicy.cpp | 14 +++----------- hotspot/src/share/vm/memory/metaspace.cpp | 15 +++++---------- .../src/share/vm/utilities/globalDefinitions.hpp | 7 +++++++ 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/hotspot/src/share/vm/memory/collectorPolicy.cpp b/hotspot/src/share/vm/memory/collectorPolicy.cpp index d6c4afe2f01..585c7d06cab 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.cpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.cpp @@ -146,11 +146,7 @@ size_t CollectorPolicy::compute_max_alignment() { // GenCollectorPolicy methods. size_t GenCollectorPolicy::scale_by_NewRatio_aligned(size_t base_size) { - size_t x = base_size / (NewRatio+1); - size_t new_gen_size = x > _min_alignment ? - align_size_down(x, _min_alignment) : - _min_alignment; - return new_gen_size; + return align_size_down_bounded(base_size / (NewRatio + 1), _min_alignment); } size_t GenCollectorPolicy::bound_minus_alignment(size_t desired_size, @@ -410,15 +406,11 @@ bool TwoGenerationCollectorPolicy::adjust_gen0_sizes(size_t* gen0_size_ptr, if ((heap_size < (*gen0_size_ptr + min_gen1_size)) && (heap_size >= min_gen1_size + _min_alignment)) { // Adjust gen0 down to accommodate min_gen1_size - *gen0_size_ptr = heap_size - min_gen1_size; - *gen0_size_ptr = - MAX2((uintx)align_size_down(*gen0_size_ptr, _min_alignment), _min_alignment); + *gen0_size_ptr = align_size_down_bounded(heap_size - min_gen1_size, _min_alignment); assert(*gen0_size_ptr > 0, "Min gen0 is too large"); result = true; } else { - *gen1_size_ptr = heap_size - *gen0_size_ptr; - *gen1_size_ptr = - MAX2((uintx)align_size_down(*gen1_size_ptr, _min_alignment), _min_alignment); + *gen1_size_ptr = align_size_down_bounded(heap_size - *gen0_size_ptr, _min_alignment); } } return result; diff --git a/hotspot/src/share/vm/memory/metaspace.cpp b/hotspot/src/share/vm/memory/metaspace.cpp index 1877967408d..7ab68dd1ea7 100644 --- a/hotspot/src/share/vm/memory/metaspace.cpp +++ b/hotspot/src/share/vm/memory/metaspace.cpp @@ -2965,11 +2965,6 @@ void Metaspace::initialize_class_space(ReservedSpace rs) { #endif -// Align down. If the aligning result in 0, return 'alignment'. -static size_t restricted_align_down(size_t size, size_t alignment) { - return MAX2(alignment, align_size_down_(size, alignment)); -} - void Metaspace::ergo_initialize() { if (DumpSharedSpaces) { // Using large pages when dumping the shared archive is currently not implemented. @@ -2992,13 +2987,13 @@ void Metaspace::ergo_initialize() { // Ideally, we would be able to set the default value of MaxMetaspaceSize in // globals.hpp to the aligned value, but this is not possible, since the // alignment depends on other flags being parsed. - MaxMetaspaceSize = restricted_align_down(MaxMetaspaceSize, _reserve_alignment); + MaxMetaspaceSize = align_size_down_bounded(MaxMetaspaceSize, _reserve_alignment); if (MetaspaceSize > MaxMetaspaceSize) { MetaspaceSize = MaxMetaspaceSize; } - MetaspaceSize = restricted_align_down(MetaspaceSize, _commit_alignment); + MetaspaceSize = align_size_down_bounded(MetaspaceSize, _commit_alignment); assert(MetaspaceSize <= MaxMetaspaceSize, "MetaspaceSize should be limited by MaxMetaspaceSize"); @@ -3006,10 +3001,10 @@ void Metaspace::ergo_initialize() { vm_exit_during_initialization("Too small initial Metaspace size"); } - MinMetaspaceExpansion = restricted_align_down(MinMetaspaceExpansion, _commit_alignment); - MaxMetaspaceExpansion = restricted_align_down(MaxMetaspaceExpansion, _commit_alignment); + MinMetaspaceExpansion = align_size_down_bounded(MinMetaspaceExpansion, _commit_alignment); + MaxMetaspaceExpansion = align_size_down_bounded(MaxMetaspaceExpansion, _commit_alignment); - CompressedClassSpaceSize = restricted_align_down(CompressedClassSpaceSize, _reserve_alignment); + CompressedClassSpaceSize = align_size_down_bounded(CompressedClassSpaceSize, _reserve_alignment); set_class_metaspace_size(CompressedClassSpaceSize); } diff --git a/hotspot/src/share/vm/utilities/globalDefinitions.hpp b/hotspot/src/share/vm/utilities/globalDefinitions.hpp index 06a32dc9037..c558574ebbd 100644 --- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp +++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp @@ -458,6 +458,13 @@ inline void* align_pointer_up(const void* addr, size_t size) { return (void*) align_size_up_((uintptr_t)addr, size); } +// Align down with a lower bound. If the aligning results in 0, return 'alignment'. + +inline size_t align_size_down_bounded(size_t size, size_t alignment) { + size_t aligned_size = align_size_down_(size, alignment); + return aligned_size > 0 ? aligned_size : alignment; +} + // Clamp an address to be within a specific page // 1. If addr is on the page it is returned as is // 2. If addr is above the page_address the start of the *next* page will be returned From 9705a6e3f94aee2f8862d84d71df4a94b9c3d3f8 Mon Sep 17 00:00:00 2001 From: Jesper Wilhelmsson Date: Mon, 21 Oct 2013 18:56:20 +0200 Subject: [PATCH 004/145] 8026853: Prepare GC code for collector policy regression fix Cleanup related to the NewSize and MaxNewSize bugs Reviewed-by: tschatzl, jcoomes, ehelin --- .../g1/g1CollectorPolicy.hpp | 1 - .../vm/gc_implementation/g1/g1RemSet.cpp | 5 ---- .../parallelScavenge/asPSOldGen.cpp | 3 -- .../parallelScavenge/asPSYoungGen.cpp | 3 -- .../parallelScavenge/parallelScavengeHeap.hpp | 28 +++++++++---------- .../parallelScavenge/psAdaptiveSizePolicy.cpp | 3 +- .../src/share/vm/memory/collectorPolicy.cpp | 15 +++++----- .../src/share/vm/memory/collectorPolicy.hpp | 17 +++++++---- .../src/share/vm/memory/genCollectedHeap.cpp | 6 ---- .../src/share/vm/memory/genCollectedHeap.hpp | 4 --- hotspot/src/share/vm/memory/universe.cpp | 2 +- hotspot/src/share/vm/runtime/arguments.cpp | 7 +++-- 12 files changed, 39 insertions(+), 55 deletions(-) diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp index d5bdc08698f..037876e07e7 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp @@ -217,7 +217,6 @@ private: return _during_marking; } -private: enum PredictionConstants { TruncatedSeqLength = 10 }; diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp index 0ed37e6c5a5..a11be17ef53 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp @@ -377,11 +377,6 @@ void G1RemSet::prepare_for_oops_into_collection_set_do() { DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); dcqs.concatenate_logs(); - if (G1CollectedHeap::use_parallel_gc_threads()) { - // Don't set the number of workers here. It will be set - // when the task is run - // _seq_task->set_n_termination((int)n_workers()); - } guarantee( _cards_scanned == NULL, "invariant" ); _cards_scanned = NEW_C_HEAP_ARRAY(size_t, n_workers(), mtGC); for (uint i = 0; i < n_workers(); ++i) { diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp index 39f5835ffe5..6f7026e5a0c 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp @@ -54,7 +54,6 @@ ASPSOldGen::ASPSOldGen(size_t initial_size, int level) : PSOldGen(initial_size, min_size, size_limit, gen_name, level), _gen_size_limit(size_limit) - {} ASPSOldGen::ASPSOldGen(PSVirtualSpace* vs, @@ -65,13 +64,11 @@ ASPSOldGen::ASPSOldGen(PSVirtualSpace* vs, int level) : PSOldGen(initial_size, min_size, size_limit, gen_name, level), _gen_size_limit(size_limit) - { _virtual_space = vs; } void ASPSOldGen::initialize_work(const char* perf_data_name, int level) { - PSOldGen::initialize_work(perf_data_name, level); // The old gen can grow to gen_size_limit(). _reserve reflects only diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp index 73b63043b71..a7b2eb28ef2 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp @@ -70,7 +70,6 @@ void ASPSYoungGen::initialize(ReservedSpace rs, size_t alignment) { } size_t ASPSYoungGen::available_for_expansion() { - size_t current_committed_size = virtual_space()->committed_size(); assert((gen_size_limit() >= current_committed_size), "generation size limit is wrong"); @@ -85,7 +84,6 @@ size_t ASPSYoungGen::available_for_expansion() { // Future implementations could check the survivors and if to_space is in the // right place (below from_space), take a chunk from to_space. size_t ASPSYoungGen::available_for_contraction() { - size_t uncommitted_bytes = virtual_space()->uncommitted_size(); if (uncommitted_bytes != 0) { return uncommitted_bytes; @@ -121,7 +119,6 @@ size_t ASPSYoungGen::available_for_contraction() { gclog_or_tty->print_cr(" gen_avail %d K", gen_avail/K); } return result_aligned; - } return 0; diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp index 4e458efa903..2ef42c86660 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp @@ -35,7 +35,6 @@ #include "utilities/ostream.hpp" class AdjoiningGenerations; -class CollectorPolicy; class GCHeapSummary; class GCTaskManager; class GenerationSizer; @@ -50,8 +49,8 @@ class ParallelScavengeHeap : public CollectedHeap { static PSOldGen* _old_gen; // Sizing policy for entire heap - static PSAdaptiveSizePolicy* _size_policy; - static PSGCAdaptivePolicyCounters* _gc_policy_counters; + static PSAdaptiveSizePolicy* _size_policy; + static PSGCAdaptivePolicyCounters* _gc_policy_counters; static ParallelScavengeHeap* _psh; @@ -67,7 +66,8 @@ class ParallelScavengeHeap : public CollectedHeap { AdjoiningGenerations* _gens; unsigned int _death_march_count; - static GCTaskManager* _gc_task_manager; // The task manager. + // The task manager + static GCTaskManager* _gc_task_manager; void trace_heap(GCWhen::Type when, GCTracer* tracer); @@ -80,15 +80,14 @@ class ParallelScavengeHeap : public CollectedHeap { HeapWord* mem_allocate_old_gen(size_t size); public: - ParallelScavengeHeap() : CollectedHeap() { - _death_march_count = 0; + ParallelScavengeHeap() : CollectedHeap(), _death_march_count(0) { set_alignment(_young_gen_alignment, intra_heap_alignment()); set_alignment(_old_gen_alignment, intra_heap_alignment()); } // Return the (conservative) maximum heap alignment static size_t conservative_max_heap_alignment() { - return intra_heap_alignment(); + return GenCollectorPolicy::intra_heap_alignment(); } // For use by VM operations @@ -103,8 +102,8 @@ class ParallelScavengeHeap : public CollectedHeap { virtual CollectorPolicy* collector_policy() const { return (CollectorPolicy*) _collector_policy; } - static PSYoungGen* young_gen() { return _young_gen; } - static PSOldGen* old_gen() { return _old_gen; } + static PSYoungGen* young_gen() { return _young_gen; } + static PSOldGen* old_gen() { return _old_gen; } virtual PSAdaptiveSizePolicy* size_policy() { return _size_policy; } @@ -127,7 +126,7 @@ class ParallelScavengeHeap : public CollectedHeap { // The alignment used for eden and survivors within the young gen // and for boundary between young gen and old gen. - static size_t intra_heap_alignment() { return 64 * K * HeapWordSize; } + size_t intra_heap_alignment() { return GenCollectorPolicy::intra_heap_alignment(); } size_t capacity() const; size_t used() const; @@ -157,16 +156,15 @@ class ParallelScavengeHeap : public CollectedHeap { virtual bool is_in_partial_collection(const void *p); #endif - bool is_in_young(oop p); // reserved part - bool is_in_old(oop p); // reserved part + bool is_in_young(oop p); // reserved part + bool is_in_old(oop p); // reserved part // Memory allocation. "gc_time_limit_was_exceeded" will // be set to true if the adaptive size policy determine that // an excessive amount of time is being spent doing collections // and caused a NULL to be returned. If a NULL is not returned, // "gc_time_limit_was_exceeded" has an undefined meaning. - HeapWord* mem_allocate(size_t size, - bool* gc_overhead_limit_was_exceeded); + HeapWord* mem_allocate(size_t size, bool* gc_overhead_limit_was_exceeded); // Allocation attempt(s) during a safepoint. It should never be called // to allocate a new TLAB as this allocation might be satisfied out @@ -257,7 +255,7 @@ class ParallelScavengeHeap : public CollectedHeap { // Call these in sequential code around the processing of strong roots. class ParStrongRootsScope : public MarkingCodeBlobClosure::MarkScope { - public: + public: ParStrongRootsScope(); ~ParStrongRootsScope(); }; diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp index 8d411811b3c..1ffdf64e2aa 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp @@ -46,8 +46,7 @@ PSAdaptiveSizePolicy::PSAdaptiveSizePolicy(size_t init_eden_size, init_survivor_size, gc_pause_goal_sec, gc_cost_ratio), - _collection_cost_margin_fraction(AdaptiveSizePolicyCollectionCostMargin/ - 100.0), + _collection_cost_margin_fraction(AdaptiveSizePolicyCollectionCostMargin / 100.0), _intra_generation_alignment(intra_generation_alignment), _live_at_last_full_gc(init_promo_size), _gc_minor_pause_goal_sec(gc_minor_pause_goal_sec), diff --git a/hotspot/src/share/vm/memory/collectorPolicy.cpp b/hotspot/src/share/vm/memory/collectorPolicy.cpp index 585c7d06cab..8cd11de6ef2 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.cpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.cpp @@ -160,7 +160,7 @@ size_t GenCollectorPolicy::bound_minus_alignment(size_t desired_size, void GenCollectorPolicy::initialize_size_policy(size_t init_eden_size, size_t init_promo_size, size_t init_survivor_size) { - const double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0; + const double max_gc_pause_sec = ((double) MaxGCPauseMillis) / 1000.0; _size_policy = new AdaptiveSizePolicy(init_eden_size, init_promo_size, init_survivor_size, @@ -192,6 +192,7 @@ void GenCollectorPolicy::initialize_flags() { // make sure there room for eden and two survivor spaces vm_exit_during_initialization("Too small new size specified"); } + if (SurvivorRatio < 1 || NewRatio < 1) { vm_exit_during_initialization("Invalid young gen ratio specified"); } @@ -465,7 +466,7 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { "generation sizes: using minimum heap = " SIZE_FORMAT, _min_heap_byte_size); } - if ((OldSize > _max_gen1_size)) { + if (OldSize > _max_gen1_size) { warning("Inconsistency between maximum heap size and maximum " "generation sizes: using maximum heap = " SIZE_FORMAT " -XX:OldSize flag is being ignored", @@ -596,9 +597,7 @@ HeapWord* GenCollectorPolicy::mem_allocate_work(size_t size, gc_count_before = Universe::heap()->total_collections(); } - VM_GenCollectForAllocation op(size, - is_tlab, - gc_count_before); + VM_GenCollectForAllocation op(size, is_tlab, gc_count_before); VMThread::execute(&op); if (op.prologue_succeeded()) { result = op.result(); @@ -833,8 +832,9 @@ MarkSweepPolicy::MarkSweepPolicy() { void MarkSweepPolicy::initialize_generations() { _generations = NEW_C_HEAP_ARRAY3(GenerationSpecPtr, number_of_generations(), mtGC, 0, AllocFailStrategy::RETURN_NULL); - if (_generations == NULL) + if (_generations == NULL) { vm_exit_during_initialization("Unable to allocate gen spec"); + } if (UseParNewGC) { _generations[0] = new GenerationSpec(Generation::ParNew, _initial_gen0_size, _max_gen0_size); @@ -843,8 +843,9 @@ void MarkSweepPolicy::initialize_generations() { } _generations[1] = new GenerationSpec(Generation::MarkSweepCompact, _initial_gen1_size, _max_gen1_size); - if (_generations[0] == NULL || _generations[1] == NULL) + if (_generations[0] == NULL || _generations[1] == NULL) { vm_exit_during_initialization("Unable to allocate gen spec"); + } } void MarkSweepPolicy::initialize_gc_policy_counters() { diff --git a/hotspot/src/share/vm/memory/collectorPolicy.hpp b/hotspot/src/share/vm/memory/collectorPolicy.hpp index a86f45c54d7..bbfccdd644c 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.hpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.hpp @@ -79,6 +79,7 @@ class CollectorPolicy : public CHeapObj { // Set to true when policy wants soft refs cleared. // Reset to false by gc after it clears all soft refs. bool _should_clear_all_soft_refs; + // Set to true by the GC if the just-completed gc cleared all // softrefs. This is set to true whenever a gc clears all softrefs, and // set to false each time gc returns to the mutator. For example, in the @@ -101,8 +102,8 @@ class CollectorPolicy : public CHeapObj { // Return maximum heap alignment that may be imposed by the policy static size_t compute_max_alignment(); - size_t min_alignment() { return _min_alignment; } - size_t max_alignment() { return _max_alignment; } + size_t min_alignment() { return _min_alignment; } + size_t max_alignment() { return _max_alignment; } size_t initial_heap_byte_size() { return _initial_heap_byte_size; } size_t max_heap_byte_size() { return _max_heap_byte_size; } @@ -248,7 +249,7 @@ class GenCollectorPolicy : public CollectorPolicy { virtual int number_of_generations() = 0; - virtual GenerationSpec **generations() { + virtual GenerationSpec **generations() { assert(_generations != NULL, "Sanity check"); return _generations; } @@ -273,6 +274,12 @@ class GenCollectorPolicy : public CollectorPolicy { virtual void initialize_size_policy(size_t init_eden_size, size_t init_promo_size, size_t init_survivor_size); + + // The alignment used for eden and survivors within the young gen + // and for boundary between young gen and old gen. + static size_t intra_heap_alignment() { + return 64 * K * HeapWordSize; + } }; // All of hotspot's current collectors are subtypes of this @@ -300,8 +307,8 @@ class TwoGenerationCollectorPolicy : public GenCollectorPolicy { // Inherited methods TwoGenerationCollectorPolicy* as_two_generation_policy() { return this; } - int number_of_generations() { return 2; } - BarrierSet::Name barrier_set_name() { return BarrierSet::CardTableModRef; } + int number_of_generations() { return 2; } + BarrierSet::Name barrier_set_name() { return BarrierSet::CardTableModRef; } virtual CollectorPolicy::Name kind() { return CollectorPolicy::TwoGenerationCollectorPolicyKind; diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.cpp b/hotspot/src/share/vm/memory/genCollectedHeap.cpp index 3a5ab210c83..2b84542ef48 100644 --- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp +++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp @@ -1053,12 +1053,6 @@ void GenCollectedHeap::save_marks() { } } -void GenCollectedHeap::compute_new_generation_sizes(int collectedGen) { - for (int i = 0; i <= collectedGen; i++) { - _gens[i]->compute_new_size(); - } -} - GenCollectedHeap* GenCollectedHeap::heap() { assert(_gch != NULL, "Uninitialized access to GenCollectedHeap::heap()"); assert(_gch->kind() == CollectedHeap::GenCollectedHeap, "not a generational heap"); diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.hpp b/hotspot/src/share/vm/memory/genCollectedHeap.hpp index 8f814132a78..5cd8a71280a 100644 --- a/hotspot/src/share/vm/memory/genCollectedHeap.hpp +++ b/hotspot/src/share/vm/memory/genCollectedHeap.hpp @@ -86,10 +86,6 @@ public: NOT_PRODUCT(static size_t _skip_header_HeapWords;) protected: - // Directs each generation up to and including "collectedGen" to recompute - // its desired size. - void compute_new_generation_sizes(int collectedGen); - // Helper functions for allocation HeapWord* attempt_allocation(size_t size, bool is_tlab, diff --git a/hotspot/src/share/vm/memory/universe.cpp b/hotspot/src/share/vm/memory/universe.cpp index 1f632ae478f..18c9733076c 100644 --- a/hotspot/src/share/vm/memory/universe.cpp +++ b/hotspot/src/share/vm/memory/universe.cpp @@ -1021,7 +1021,7 @@ bool universe_post_init() { Universe::_virtual_machine_error_instance = InstanceKlass::cast(k)->allocate_instance(CHECK_false); - Universe::_vm_exception = InstanceKlass::cast(k)->allocate_instance(CHECK_false); + Universe::_vm_exception = InstanceKlass::cast(k)->allocate_instance(CHECK_false); if (!DumpSharedSpaces) { // These are the only Java fields that are currently set during shared space dumping. diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp index 8060dae0377..1e82e5bdca8 100644 --- a/hotspot/src/share/vm/runtime/arguments.cpp +++ b/hotspot/src/share/vm/runtime/arguments.cpp @@ -1408,7 +1408,7 @@ uintx Arguments::max_heap_for_compressed_oops() { // NULL page is located before the heap, we pad the NULL page to the conservative // maximum alignment that the GC may ever impose upon the heap. size_t displacement_due_to_null_page = align_size_up_(os::vm_page_size(), - Arguments::conservative_max_heap_alignment()); + _conservative_max_heap_alignment); LP64_ONLY(return OopEncodingHeapMax - displacement_due_to_null_page); NOT_LP64(ShouldNotReachHere(); return 0); @@ -2681,9 +2681,10 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args, describe_range_error(errcode); return JNI_EINVAL; } - FLAG_SET_CMDLINE(uintx, InitialHeapSize, (uintx)long_initial_heap_size); + set_min_heap_size((uintx)long_initial_heap_size); // Currently the minimum size and the initial heap sizes are the same. - set_min_heap_size(InitialHeapSize); + // Can be overridden with -XX:InitialHeapSize. + FLAG_SET_CMDLINE(uintx, InitialHeapSize, (uintx)long_initial_heap_size); // -Xmx } else if (match_option(option, "-Xmx", &tail) || match_option(option, "-XX:MaxHeapSize=", &tail)) { julong long_max_heap_size = 0; From 8fe7a15c08336c8428c4470605da77c2fa4bff43 Mon Sep 17 00:00:00 2001 From: Staffan Larsen Date: Fri, 1 Nov 2013 10:08:10 +0100 Subject: [PATCH 005/145] 8027692: Remove java/lang/management/MemoryMXBean/LowMemoryTest2.sh from ProblemList.txt Reviewed-by: stefank, alanb --- jdk/test/ProblemList.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt index ea99549a0f7..202f703b713 100644 --- a/jdk/test/ProblemList.txt +++ b/jdk/test/ProblemList.txt @@ -128,9 +128,6 @@ java/lang/management/ThreadMXBean/ThreadStateTest.java generic-all # 7067973 java/lang/management/MemoryMXBean/CollectionUsageThreshold.java generic-all -# 7196801 -java/lang/management/MemoryMXBean/LowMemoryTest2.sh generic-all - # 8021230 java/lang/ThreadLocal/ThreadLocalSupplierTest.java generic-all From fdbeb8e0fb4a958fb8a95e70466e51a7acfc7375 Mon Sep 17 00:00:00 2001 From: Staffan Larsen Date: Fri, 1 Nov 2013 15:10:10 +0100 Subject: [PATCH 006/145] 8027705: com/sun/jdi/JdbMethodExitTest.sh fails when a background thread is generating events Reviewed-by: dcubed --- jdk/test/com/sun/jdi/JdbMethodExitTest.sh | 20 +++++---- jdk/test/com/sun/jdi/ShellScaffold.sh | 52 +++++++++++++++++++++++ 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/jdk/test/com/sun/jdi/JdbMethodExitTest.sh b/jdk/test/com/sun/jdi/JdbMethodExitTest.sh index 52c0fe7becf..ab00816ca6e 100644 --- a/jdk/test/com/sun/jdi/JdbMethodExitTest.sh +++ b/jdk/test/com/sun/jdi/JdbMethodExitTest.sh @@ -156,7 +156,7 @@ class $classname { // a resume. $classname xx = new $classname(); - + System.out.println("threadid="+Thread.currentThread().getId()); bkpt(); // test all possible return types @@ -197,6 +197,8 @@ dojdbCmds() # test all possible return types runToBkpt @1 + debuggeeMatchRegexp "s/threadid=\(.*\)/\1/g" + threadid=$? cmd untrace cmd trace methods @@ -226,7 +228,7 @@ dojdbCmds() # trace exit of methods with all the return values # (but just check a couple of them) - cmd trace go exits + cmd trace go method exits $threadid cmd cont jdbFailIfNotPresent "instance of JdbMethodExitTest" jdbFailIfNotPresent "return value = 8" @@ -235,7 +237,7 @@ dojdbCmds() cmd step up - cmd trace methods + cmd trace methods $threadid cmd cont jdbFailIfNotPresent "Method entered:" cmd cont @@ -243,7 +245,9 @@ dojdbCmds() cmd step up - cmd trace go methods + cmd trace go methods $threadid + cmd cont + cmd cont cmd cont jdbFailIfNotPresent "Method entered: \"thread=main\", JdbMethodExitTest.traceMethods1" jdbFailIfNotPresent 'Method exited: .* JdbMethodExitTest.traceMethods1' @@ -251,14 +255,14 @@ dojdbCmds() cmd step up - cmd trace method exits + cmd trace method exits $threadid cmd cont jdbFailIfNotPresent "Method exited: return value = \"traceExits\"" cmd untrace cmd step up - cmd trace go method exits + cmd trace go method exits $threadid cmd cont jdbFailIfNotPresent 'Method exited: .* JdbMethodExitTest.traceExits1' cmd untrace @@ -266,7 +270,7 @@ dojdbCmds() cmd step # step into traceExit() - cmd trace method exit + cmd trace method exit $threadid cmd cont jdbFailIfNotPresent "Method exited: return value = \"traceExit\"" cmd untrace @@ -275,7 +279,7 @@ dojdbCmds() cmd step cmd step # skip over setting return value in caller :-( - cmd trace go method exit + cmd trace go method exit $threadid cmd cont jdbFailIfNotPresent 'Method exited: .*JdbMethodExitTest.traceExit1' cmd quit diff --git a/jdk/test/com/sun/jdi/ShellScaffold.sh b/jdk/test/com/sun/jdi/ShellScaffold.sh index d8635e3dda9..6ed55c1ae91 100644 --- a/jdk/test/com/sun/jdi/ShellScaffold.sh +++ b/jdk/test/com/sun/jdi/ShellScaffold.sh @@ -1004,6 +1004,50 @@ grepForString() return $stat } +# $1 is the filename, $2 is the regexp to match and return, +# $3 is the number of lines to search (from the end) +matchRegexp() +{ + if [ -z "$3" ] ; then + theCmd=cat + else + theCmd="tail -$3" + fi + + case "$2" in + *\>*) + # Target string contains a '>' so we better not ignore it + res=`$theCmd $1 | sed -e "$2"` + ;; + *) + # Target string does not contain a '>'. + # NOTE: if $1 does not end with a new line, piping it to sed + # doesn't include the chars on the last line. Detect this + # case, and add a new line. + theFile="$1" + if [ `tail -1 "$theFile" | wc -l | sed -e 's@ @@g'` = 0 ] ; then + # The target file doesn't end with a new line so we have + # add one to a copy of the target file so the sed command + # below can filter that last line. + cp "$theFile" "$theFile.tmp" + theFile="$theFile.tmp" + echo >> "$theFile" + fi + + # See bug 6220903. Sometimes the jdb prompt chars ('> ') can + # get interleaved in the target file which can keep us from + # matching the target string. + res=`$theCmd "$theFile" | sed -e 's@> @@g' -e 's@>@@g' \ + | sed -e "$2"` + if [ "$theFile" != "$1" ]; then + # remove the copy of the target file + rm -f "$theFile" + fi + unset theFile + esac + return $res +} + # $1 is the filename, $2 is the string to look for, # $3 is the number of lines to search (from the end) failIfPresent() @@ -1058,6 +1102,14 @@ debuggeeFailIfPresent() failIfPresent $debuggeeOutFile "$1" $2 } +# match and return the output from the regexp $1 in the debuggee output +# $2 is the number of lines to search (from the end) +debuggeeMatchRegexp() +{ + matchRegexp $debuggeeOutFile "$1" $2 +} + + # This should really be named 'done' instead of pass. pass() { From 1dbd6b18552c581f788ac9899c13ec2c8a3ad667 Mon Sep 17 00:00:00 2001 From: Athijegannathan Sundararajan Date: Fri, 1 Nov 2013 19:54:48 +0530 Subject: [PATCH 007/145] 8027700: function redeclaration checks missing for declaration binding instantiation Reviewed-by: jlaskey, lagergren --- .../jdk/nashorn/internal/codegen/Attr.java | 1 + .../nashorn/internal/codegen/MapCreator.java | 4 ++ .../src/jdk/nashorn/internal/ir/Symbol.java | 20 +++++++ .../nashorn/internal/runtime/Property.java | 31 +++++++---- .../internal/runtime/ScriptObject.java | 13 ++++- nashorn/test/script/basic/JDK-8015355.js | 4 -- nashorn/test/script/basic/JDK-8027700.js | 54 +++++++++++++++++++ 7 files changed, 111 insertions(+), 16 deletions(-) create mode 100644 nashorn/test/script/basic/JDK-8027700.js diff --git a/nashorn/src/jdk/nashorn/internal/codegen/Attr.java b/nashorn/src/jdk/nashorn/internal/codegen/Attr.java index 5415a06df41..d4e378cfd8b 100644 --- a/nashorn/src/jdk/nashorn/internal/codegen/Attr.java +++ b/nashorn/src/jdk/nashorn/internal/codegen/Attr.java @@ -271,6 +271,7 @@ final class Attr extends NodeOperatorVisitor { functionNode.addDeclaredSymbol(symbol); if (varNode.isFunctionDeclaration()) { newType(symbol, FunctionNode.FUNCTION_TYPE); + symbol.setIsFunctionDeclaration(); } return varNode.setName((IdentNode)ident.setSymbol(lc, symbol)); } diff --git a/nashorn/src/jdk/nashorn/internal/codegen/MapCreator.java b/nashorn/src/jdk/nashorn/internal/codegen/MapCreator.java index 2921ea9ecbc..8012adf5065 100644 --- a/nashorn/src/jdk/nashorn/internal/codegen/MapCreator.java +++ b/nashorn/src/jdk/nashorn/internal/codegen/MapCreator.java @@ -134,6 +134,10 @@ public class MapCreator { flags |= Property.CAN_BE_UNDEFINED; } + if (symbol.isFunctionDeclaration()) { + flags |= Property.IS_FUNCTION_DECLARATION; + } + return flags; } diff --git a/nashorn/src/jdk/nashorn/internal/ir/Symbol.java b/nashorn/src/jdk/nashorn/internal/ir/Symbol.java index 69e98ac6b3d..2906893f1ee 100644 --- a/nashorn/src/jdk/nashorn/internal/ir/Symbol.java +++ b/nashorn/src/jdk/nashorn/internal/ir/Symbol.java @@ -75,6 +75,8 @@ public final class Symbol implements Comparable { public static final int IS_SPECIALIZED_PARAM = 1 << 13; /** Is this symbol a shared temporary? */ public static final int IS_SHARED = 1 << 14; + /** Is this a function declaration? */ + public static final int IS_FUNCTION_DECLARATION = 1 << 15; /** Null or name identifying symbol. */ private final String name; @@ -359,6 +361,14 @@ public final class Symbol implements Comparable { return (flags & IS_SHARED) == IS_SHARED; } + /** + * Check if this symbol is a function declaration + * @return true if a function declaration + */ + public boolean isFunctionDeclaration() { + return (flags & IS_FUNCTION_DECLARATION) == IS_FUNCTION_DECLARATION; + } + /** * Creates an unshared copy of a symbol. The symbol must be currently shared. * @param newName the name for the new symbol. @@ -395,6 +405,16 @@ public final class Symbol implements Comparable { } + /** + * Mark this symbol as a function declaration. + */ + public void setIsFunctionDeclaration() { + if (!isFunctionDeclaration()) { + trace("SET IS FUNCTION DECLARATION"); + flags |= IS_FUNCTION_DECLARATION; + } + } + /** * Check if this symbol is a variable * @return true if variable diff --git a/nashorn/src/jdk/nashorn/internal/runtime/Property.java b/nashorn/src/jdk/nashorn/internal/runtime/Property.java index e735ed11ea5..d1dbe2adb4b 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/Property.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/Property.java @@ -56,33 +56,36 @@ public abstract class Property { public static final int WRITABLE_ENUMERABLE_CONFIGURABLE = 0b0000_0000_0000; /** ECMA 8.6.1 - Is this property not writable? */ - public static final int NOT_WRITABLE = 0b0000_0000_0001; + public static final int NOT_WRITABLE = 1 << 0; /** ECMA 8.6.1 - Is this property not enumerable? */ - public static final int NOT_ENUMERABLE = 0b0000_0000_0010; + public static final int NOT_ENUMERABLE = 1 << 1; /** ECMA 8.6.1 - Is this property not configurable? */ - public static final int NOT_CONFIGURABLE = 0b0000_0000_0100; + public static final int NOT_CONFIGURABLE = 1 << 2; - private static final int MODIFY_MASK = 0b0000_0000_1111; + private static final int MODIFY_MASK = (NOT_WRITABLE | NOT_ENUMERABLE | NOT_CONFIGURABLE); /** Is this a spill property? See {@link AccessorProperty} */ - public static final int IS_SPILL = 0b0000_0001_0000; + public static final int IS_SPILL = 1 << 3; /** Is this a function parameter? */ - public static final int IS_PARAMETER = 0b0000_0010_0000; + public static final int IS_PARAMETER = 1 << 4; /** Is parameter accessed thru arguments? */ - public static final int HAS_ARGUMENTS = 0b0000_0100_0000; + public static final int HAS_ARGUMENTS = 1 << 5; /** Is this property always represented as an Object? See {@link ObjectClassGenerator} and dual fields flag. */ - public static final int IS_ALWAYS_OBJECT = 0b0000_1000_0000; + public static final int IS_ALWAYS_OBJECT = 1 << 6; /** Can this property be primitive? */ - public static final int CAN_BE_PRIMITIVE = 0b0001_0000_0000; + public static final int CAN_BE_PRIMITIVE = 1 << 7; /** Can this property be undefined? */ - public static final int CAN_BE_UNDEFINED = 0b0010_0000_0000; + public static final int CAN_BE_UNDEFINED = 1 << 8; + + /* Is this a function declaration property ? */ + public static final int IS_FUNCTION_DECLARATION = 1 << 9; /** Property key. */ private final String key; @@ -522,4 +525,12 @@ public abstract class Property { public boolean canBeUndefined() { return (flags & CAN_BE_UNDEFINED) == CAN_BE_UNDEFINED; } + + /** + * Check whether this property represents a function declaration. + * @return whether this property is a function declaration or not. + */ + public boolean isFunctionDeclaration() { + return (flags & IS_FUNCTION_DECLARATION) == IS_FUNCTION_DECLARATION; + } } diff --git a/nashorn/src/jdk/nashorn/internal/runtime/ScriptObject.java b/nashorn/src/jdk/nashorn/internal/runtime/ScriptObject.java index 5d1fbcd67f1..c7c8202775f 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/ScriptObject.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/ScriptObject.java @@ -226,14 +226,23 @@ public abstract class ScriptObject extends PropertyListenerManager implements Pr for (final Property property : properties) { final String key = property.getKey(); - - if (newMap.findProperty(key) == null) { + final Property oldProp = newMap.findProperty(key); + if (oldProp == null) { if (property instanceof UserAccessorProperty) { final UserAccessorProperty prop = this.newUserAccessors(key, property.getFlags(), property.getGetterFunction(source), property.getSetterFunction(source)); newMap = newMap.addProperty(prop); } else { newMap = newMap.addPropertyBind((AccessorProperty)property, source); } + } else { + // See ECMA section 10.5 Declaration Binding Instantiation + // step 5 processing each function declaration. + if (property.isFunctionDeclaration() && !oldProp.isConfigurable()) { + if (oldProp instanceof UserAccessorProperty || + !(oldProp.isWritable() && oldProp.isEnumerable())) { + throw typeError("cant.redefine.property", key, ScriptRuntime.safeToString(this)); + } + } } } diff --git a/nashorn/test/script/basic/JDK-8015355.js b/nashorn/test/script/basic/JDK-8015355.js index bc39d8d981c..aa1a39de3a7 100644 --- a/nashorn/test/script/basic/JDK-8015355.js +++ b/nashorn/test/script/basic/JDK-8015355.js @@ -28,10 +28,6 @@ * @run */ -function fail(msg) { - print(msg); -} - function check(callback) { try { callback(); diff --git a/nashorn/test/script/basic/JDK-8027700.js b/nashorn/test/script/basic/JDK-8027700.js new file mode 100644 index 00000000000..4c5445d8429 --- /dev/null +++ b/nashorn/test/script/basic/JDK-8027700.js @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * JDK-8027700: function redeclaration checks missing for declaration binding instantiation + * + * @test + * @run + */ + +Object.defineProperty(this,"x", { + value:0, + writable:true, + enumerable:false +}) + +try { + eval("function x() {}"); + fail("should have thrown TypeError"); +} catch (e) { + if (! (e instanceof TypeError)) { + fail("TypeError expected but got " + e); + } +} + +Object.defineProperty(this, "foo", { value:0 }) +try { + eval("function foo() {}"); + fail("should have thrown TypeError"); +} catch (e) { + if (! (e instanceof TypeError)) { + fail("TypeError expected but got " + e); + } +} From 80f2daae7bcddd73801e7b803c2fe5de4004b774 Mon Sep 17 00:00:00 2001 From: Attila Szegedi Date: Fri, 1 Nov 2013 15:36:33 +0100 Subject: [PATCH 008/145] 8027236: Ensure ScriptObject and ConsString aren't visible to Java Reviewed-by: lagergren, sundar --- .../api/scripting/ScriptObjectMirror.java | 17 ++- .../jdk/nashorn/internal/objects/Global.java | 8 +- .../internal/objects/NativeObject.java | 4 +- .../nashorn/internal/runtime/ConsString.java | 16 +-- .../jdk/nashorn/internal/runtime/JSType.java | 11 +- .../internal/runtime/linker/Bootstrap.java | 2 +- .../linker/BoundDynamicMethodLinker.java | 2 +- .../linker/JavaSuperAdapterLinker.java | 5 +- .../runtime/linker/NashornBeansLinker.java | 127 ++++++++++++++++++ .../linker/NashornStaticClassLinker.java | 2 +- nashorn/test/script/basic/JDK-8027236.js | 37 +++++ .../test/script/basic/JDK-8027236.js.EXPECTED | 1 + .../api/javaaccess/ConsStringTest.java | 99 ++++++++++++++ 13 files changed, 305 insertions(+), 26 deletions(-) create mode 100644 nashorn/src/jdk/nashorn/internal/runtime/linker/NashornBeansLinker.java create mode 100644 nashorn/test/script/basic/JDK-8027236.js create mode 100644 nashorn/test/script/basic/JDK-8027236.js.EXPECTED create mode 100644 nashorn/test/src/jdk/nashorn/api/javaaccess/ConsStringTest.java diff --git a/nashorn/src/jdk/nashorn/api/scripting/ScriptObjectMirror.java b/nashorn/src/jdk/nashorn/api/scripting/ScriptObjectMirror.java index ee287a2e088..6b88668921b 100644 --- a/nashorn/src/jdk/nashorn/api/scripting/ScriptObjectMirror.java +++ b/nashorn/src/jdk/nashorn/api/scripting/ScriptObjectMirror.java @@ -41,6 +41,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.Callable; import javax.script.Bindings; +import jdk.nashorn.internal.runtime.ConsString; import jdk.nashorn.internal.runtime.Context; import jdk.nashorn.internal.runtime.GlobalObject; import jdk.nashorn.internal.runtime.JSType; @@ -594,14 +595,20 @@ public final class ScriptObjectMirror extends AbstractJSObject implements Bindin } /** - * Make a script object mirror on given object if needed. + * Make a script object mirror on given object if needed. Also converts ConsString instances to Strings. * - * @param obj object to be wrapped - * @param homeGlobal global to which this object belongs - * @return wrapped object + * @param obj object to be wrapped/converted + * @param homeGlobal global to which this object belongs. Not used for ConsStrings. + * @return wrapped/converted object */ public static Object wrap(final Object obj, final ScriptObject homeGlobal) { - return (obj instanceof ScriptObject && homeGlobal != null) ? new ScriptObjectMirror((ScriptObject)obj, homeGlobal) : obj; + if(obj instanceof ScriptObject) { + return homeGlobal != null ? new ScriptObjectMirror((ScriptObject)obj, homeGlobal) : obj; + } + if(obj instanceof ConsString) { + return obj.toString(); + } + return obj; } /** diff --git a/nashorn/src/jdk/nashorn/internal/objects/Global.java b/nashorn/src/jdk/nashorn/internal/objects/Global.java index a0df10b0aa4..0a09370aac9 100644 --- a/nashorn/src/jdk/nashorn/internal/objects/Global.java +++ b/nashorn/src/jdk/nashorn/internal/objects/Global.java @@ -53,19 +53,19 @@ import jdk.nashorn.internal.runtime.GlobalFunctions; import jdk.nashorn.internal.runtime.GlobalObject; import jdk.nashorn.internal.runtime.JSType; import jdk.nashorn.internal.runtime.NativeJavaPackage; -import jdk.nashorn.internal.runtime.PropertyMap; -import jdk.nashorn.internal.runtime.ScriptEnvironment; import jdk.nashorn.internal.runtime.PropertyDescriptor; -import jdk.nashorn.internal.runtime.arrays.ArrayData; -import jdk.nashorn.internal.runtime.regexp.RegExpResult; +import jdk.nashorn.internal.runtime.PropertyMap; import jdk.nashorn.internal.runtime.Scope; +import jdk.nashorn.internal.runtime.ScriptEnvironment; import jdk.nashorn.internal.runtime.ScriptFunction; import jdk.nashorn.internal.runtime.ScriptObject; import jdk.nashorn.internal.runtime.ScriptRuntime; import jdk.nashorn.internal.runtime.ScriptingFunctions; import jdk.nashorn.internal.runtime.Source; +import jdk.nashorn.internal.runtime.arrays.ArrayData; import jdk.nashorn.internal.runtime.linker.Bootstrap; import jdk.nashorn.internal.runtime.linker.InvokeByName; +import jdk.nashorn.internal.runtime.regexp.RegExpResult; import jdk.nashorn.internal.scripts.JO; /** diff --git a/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java b/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java index 94e3bef2d48..c7db39a5a24 100644 --- a/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java +++ b/nashorn/src/jdk/nashorn/internal/objects/NativeObject.java @@ -60,6 +60,7 @@ import jdk.nashorn.internal.runtime.ScriptObject; import jdk.nashorn.internal.runtime.ScriptRuntime; import jdk.nashorn.internal.runtime.linker.Bootstrap; import jdk.nashorn.internal.runtime.linker.InvokeByName; +import jdk.nashorn.internal.runtime.linker.NashornBeansLinker; /** * ECMA 15.2 Object objects @@ -729,8 +730,7 @@ public final class NativeObject { final MethodType methodType, final Object source) { final GuardedInvocation inv; try { - inv = linker.getGuardedInvocation(createLinkRequest(operation, methodType, source), - Bootstrap.getLinkerServices()); + inv = NashornBeansLinker.getGuardedInvocation(linker, createLinkRequest(operation, methodType, source), Bootstrap.getLinkerServices()); assert passesGuard(source, inv.getGuard()); } catch(RuntimeException|Error e) { throw e; diff --git a/nashorn/src/jdk/nashorn/internal/runtime/ConsString.java b/nashorn/src/jdk/nashorn/internal/runtime/ConsString.java index 9cf51552f94..8f764f4bdda 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/ConsString.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/ConsString.java @@ -57,10 +57,7 @@ public final class ConsString implements CharSequence { @Override public String toString() { - if (!flat) { - flatten(); - } - return (String) left; + return (String) flattened(); } @Override @@ -70,18 +67,19 @@ public final class ConsString implements CharSequence { @Override public char charAt(final int index) { - if (!flat) { - flatten(); - } - return left.charAt(index); + return flattened().charAt(index); } @Override public CharSequence subSequence(final int start, final int end) { + return flattened().subSequence(start, end); + } + + private CharSequence flattened() { if (!flat) { flatten(); } - return left.subSequence(start, end); + return left; } private void flatten() { diff --git a/nashorn/src/jdk/nashorn/internal/runtime/JSType.java b/nashorn/src/jdk/nashorn/internal/runtime/JSType.java index e1b913022c0..aeeb336f65a 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/JSType.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/JSType.java @@ -883,7 +883,7 @@ public enum JSType { */ public static Object toJavaArray(final Object obj, final Class componentType) { if (obj instanceof ScriptObject) { - return convertArray(((ScriptObject)obj).getArray().asObjectArray(), componentType); + return ((ScriptObject)obj).getArray().asArrayOfType(componentType); } else if (obj instanceof JSObject) { final ArrayLikeIterator itr = ArrayLikeIterator.arrayLikeIterator(obj); final int len = (int) itr.getLength(); @@ -908,6 +908,15 @@ public enum JSType { * @return converted Java array */ public static Object convertArray(final Object[] src, final Class componentType) { + if(componentType == Object.class) { + for(int i = 0; i < src.length; ++i) { + final Object e = src[i]; + if(e instanceof ConsString) { + src[i] = e.toString(); + } + } + } + final int l = src.length; final Object dst = Array.newInstance(componentType, l); final MethodHandle converter = Bootstrap.getLinkerServices().getTypeConverter(Object.class, componentType); diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/Bootstrap.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/Bootstrap.java index f725817af4b..0d5f68a1e2f 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/Bootstrap.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/Bootstrap.java @@ -63,7 +63,7 @@ public final class Bootstrap { final DynamicLinkerFactory factory = new DynamicLinkerFactory(); factory.setPrioritizedLinkers(new NashornLinker(), new NashornPrimitiveLinker(), new NashornStaticClassLinker(), new BoundDynamicMethodLinker(), new JavaSuperAdapterLinker(), new JSObjectLinker(), new ReflectionCheckLinker()); - factory.setFallbackLinkers(new BeansLinker(), new NashornBottomLinker()); + factory.setFallbackLinkers(new NashornBeansLinker(), new NashornBottomLinker()); factory.setSyncOnRelink(true); final int relinkThreshold = Options.getIntProperty("nashorn.unstable.relink.threshold", -1); if (relinkThreshold > -1) { diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/BoundDynamicMethodLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/BoundDynamicMethodLinker.java index ccd497d741b..77c1618b822 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/BoundDynamicMethodLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/BoundDynamicMethodLinker.java @@ -72,7 +72,7 @@ final class BoundDynamicMethodLinker implements TypeBasedGuardingDynamicLinker { type.changeParameterType(0, dynamicMethodClass).changeParameterType(1, boundThis.getClass())); // Delegate to BeansLinker - final GuardedInvocation inv = BeansLinker.getLinkerForClass(dynamicMethodClass).getGuardedInvocation( + final GuardedInvocation inv = NashornBeansLinker.getGuardedInvocation(BeansLinker.getLinkerForClass(dynamicMethodClass), linkRequest.replaceArguments(newDescriptor, args), linkerServices); if(inv == null) { return null; diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaSuperAdapterLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaSuperAdapterLinker.java index 8e40805a746..c42af1d81f8 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaSuperAdapterLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/JavaSuperAdapterLinker.java @@ -100,8 +100,9 @@ final class JavaSuperAdapterLinker implements TypeBasedGuardingDynamicLinker { type.changeParameterType(0, adapterClass), 0); // Delegate to BeansLinker - final GuardedInvocation guardedInv = BeansLinker.getLinkerForClass(adapterClass).getGuardedInvocation( - linkRequest.replaceArguments(newDescriptor, args), linkerServices); + final GuardedInvocation guardedInv = NashornBeansLinker.getGuardedInvocation( + BeansLinker.getLinkerForClass(adapterClass), linkRequest.replaceArguments(newDescriptor, args), + linkerServices); final MethodHandle guard = IS_ADAPTER_OF_CLASS.bindTo(adapterClass); if(guardedInv == null) { diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornBeansLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornBeansLinker.java new file mode 100644 index 00000000000..e2db2b11cc9 --- /dev/null +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornBeansLinker.java @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.nashorn.internal.runtime.linker; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; +import jdk.internal.dynalink.beans.BeansLinker; +import jdk.internal.dynalink.linker.ConversionComparator.Comparison; +import jdk.internal.dynalink.linker.GuardedInvocation; +import jdk.internal.dynalink.linker.GuardingDynamicLinker; +import jdk.internal.dynalink.linker.LinkRequest; +import jdk.internal.dynalink.linker.LinkerServices; +import jdk.internal.dynalink.support.Lookup; +import jdk.nashorn.internal.runtime.ConsString; + +/** + * This linker delegates to a {@code BeansLinker} but passes it a special linker services object that has a modified + * {@code asType} method that will ensure that we never pass internal engine objects that should not be externally + * observable (currently only ConsString) to Java APIs, but rather that we flatten it into a String. We can't just add + * this functionality as custom converters via {@code GuaardingTypeConverterFactory}, since they are not consulted when + * the target method handle parameter signature is {@code Object}. + */ +public class NashornBeansLinker implements GuardingDynamicLinker { + private static final MethodHandle EXPORT_ARGUMENT = new Lookup(MethodHandles.lookup()).findOwnStatic("exportArgument", Object.class, Object.class); + + private final BeansLinker beansLinker = new BeansLinker(); + + @Override + public GuardedInvocation getGuardedInvocation(final LinkRequest linkRequest, final LinkerServices linkerServices) throws Exception { + return getGuardedInvocation(beansLinker, linkRequest, linkerServices); + } + + /** + * Delegates to the specified linker but injects its linker services wrapper so that it will apply all special + * conversions that this class does. + * @param delegateLinker the linker to which the actual work is delegated to. + * @param linkRequest the delegated link request + * @param linkerServices the original link services that will be augmented with special conversions + * @return the guarded invocation from the delegate, possibly augmented with special conversions + * @throws Exception if the delegate throws an exception + */ + public static GuardedInvocation getGuardedInvocation(final GuardingDynamicLinker delegateLinker, final LinkRequest linkRequest, final LinkerServices linkerServices) throws Exception { + return delegateLinker.getGuardedInvocation(linkRequest, new NashornBeansLinkerServices(linkerServices)); + } + + @SuppressWarnings("unused") + private static Object exportArgument(final Object arg) { + return arg instanceof ConsString ? arg.toString() : arg; + } + + private static class NashornBeansLinkerServices implements LinkerServices { + private final LinkerServices linkerServices; + + NashornBeansLinkerServices(final LinkerServices linkerServices) { + this.linkerServices = linkerServices; + } + + @Override + public MethodHandle asType(final MethodHandle handle, final MethodType fromType) { + final MethodHandle typed = linkerServices.asType(handle, fromType); + + final MethodType handleType = handle.type(); + final int paramCount = handleType.parameterCount(); + assert fromType.parameterCount() == handleType.parameterCount(); + + MethodHandle[] filters = null; + for(int i = 0; i < paramCount; ++i) { + if(shouldConvert(handleType.parameterType(i), fromType.parameterType(i))) { + if(filters == null) { + filters = new MethodHandle[paramCount]; + } + filters[i] = EXPORT_ARGUMENT; + } + } + + return filters != null ? MethodHandles.filterArguments(typed, 0, filters) : typed; + } + + private static boolean shouldConvert(final Class handleType, final Class fromType) { + return handleType == Object.class && fromType == Object.class; + } + + @Override + public MethodHandle getTypeConverter(final Class sourceType, final Class targetType) { + return linkerServices.getTypeConverter(sourceType, targetType); + } + + @Override + public boolean canConvert(final Class from, final Class to) { + return linkerServices.canConvert(from, to); + } + + @Override + public GuardedInvocation getGuardedInvocation(final LinkRequest linkRequest) throws Exception { + return linkerServices.getGuardedInvocation(linkRequest); + } + + @Override + public Comparison compareConversion(final Class sourceType, final Class targetType1, final Class targetType2) { + return linkerServices.compareConversion(sourceType, targetType1, targetType2); + } + } +} diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java index ce60d790f57..72ed97666d0 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java @@ -93,7 +93,7 @@ final class NashornStaticClassLinker implements TypeBasedGuardingDynamicLinker { } private static GuardedInvocation delegate(LinkerServices linkerServices, final LinkRequest request) throws Exception { - return staticClassLinker.getGuardedInvocation(request, linkerServices); + return NashornBeansLinker.getGuardedInvocation(staticClassLinker, request, linkerServices); } private static GuardedInvocation checkNullConstructor(final GuardedInvocation ctorInvocation, final Class receiverClass) { diff --git a/nashorn/test/script/basic/JDK-8027236.js b/nashorn/test/script/basic/JDK-8027236.js new file mode 100644 index 00000000000..02f9e8d8e97 --- /dev/null +++ b/nashorn/test/script/basic/JDK-8027236.js @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * JDK-8027236: Ensure ScriptObject and ConsString aren't visible to Java + * + * @test + * @run + */ + +// Check that ConsString is flattened +var m = new java.util.HashMap() +var x = "f" +x += "oo" +m.put(x, "bar") +print(m.get("foo")) +// Note: many more tests are run by the JavaExportImportTest TestNG class. diff --git a/nashorn/test/script/basic/JDK-8027236.js.EXPECTED b/nashorn/test/script/basic/JDK-8027236.js.EXPECTED new file mode 100644 index 00000000000..5716ca5987c --- /dev/null +++ b/nashorn/test/script/basic/JDK-8027236.js.EXPECTED @@ -0,0 +1 @@ +bar diff --git a/nashorn/test/src/jdk/nashorn/api/javaaccess/ConsStringTest.java b/nashorn/test/src/jdk/nashorn/api/javaaccess/ConsStringTest.java new file mode 100644 index 00000000000..1eadfb77112 --- /dev/null +++ b/nashorn/test/src/jdk/nashorn/api/javaaccess/ConsStringTest.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.nashorn.api.javaaccess; + +import static org.testng.AssertJUnit.assertEquals; + +import java.util.HashMap; +import java.util.Map; +import javax.script.Bindings; +import javax.script.ScriptContext; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import jdk.nashorn.api.scripting.JSObject; +import org.testng.TestNG; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class ConsStringTest { + private static ScriptEngine e = null; + + public static void main(final String[] args) { + TestNG.main(args); + } + + @BeforeClass + public static void setUpClass() throws ScriptException { + e = new ScriptEngineManager().getEngineByName("nashorn"); + } + + @AfterClass + public static void tearDownClass() { + e = null; + } + + @Test + public void testConsStringFlattening() throws ScriptException { + final Bindings b = e.getBindings(ScriptContext.ENGINE_SCOPE); + final Map m = new HashMap<>(); + b.put("m", m); + e.eval("var x = 'f'; x += 'oo'; var y = 'b'; y += 'ar'; m.put(x, y)"); + assertEquals("bar", m.get("foo")); + } + + @Test + public void testConsStringFromMirror() throws ScriptException { + final Bindings b = e.getBindings(ScriptContext.ENGINE_SCOPE); + final Map m = new HashMap<>(); + e.eval("var x = 'f'; x += 'oo'; var obj = {x: x};"); + assertEquals("foo", ((JSObject)b.get("obj")).getMember("x")); + } + + @Test + public void testArrayConsString() throws ScriptException { + final Bindings b = e.getBindings(ScriptContext.ENGINE_SCOPE); + final ArrayHolder h = new ArrayHolder(); + b.put("h", h); + e.eval("var x = 'f'; x += 'oo'; h.array = [x];"); + assertEquals(1, h.array.length); + assertEquals("foo", h.array[0]); + } + + + public static class ArrayHolder { + private Object[] array; + + public void setArray(Object[] array) { + this.array = array; + } + + public Object[] getArray() { + return array; + } + } +} From 0fa3a71c8a4821327ebada5673596889f8df8a7d Mon Sep 17 00:00:00 2001 From: Jesper Wilhelmsson Date: Fri, 1 Nov 2013 17:09:38 +0100 Subject: [PATCH 009/145] 8016309: assert(eden_size > 0 && survivor_size > 0) failed: just checking 7057939: jmap shows MaxNewSize=4GB when Java is using parallel collector Major cleanup of the collectorpolicy classes Reviewed-by: tschatzl, jcoomes --- .../cmsCollectorPolicy.cpp | 5 +- .../cmsCollectorPolicy.hpp | 3 +- .../gc_implementation/g1/g1CollectedHeap.cpp | 2 +- .../g1/g1CollectorPolicy.cpp | 76 +++- .../g1/g1CollectorPolicy.hpp | 15 +- .../vm/gc_implementation/g1/heapRegion.cpp | 5 - .../parallelScavenge/adjoiningGenerations.cpp | 19 +- .../parallelScavenge/adjoiningGenerations.hpp | 10 +- .../parallelScavenge/asPSOldGen.cpp | 4 +- .../parallelScavenge/asPSYoungGen.cpp | 10 +- .../parallelScavenge/generationSizer.cpp | 84 ++++ .../parallelScavenge/generationSizer.hpp | 40 +- .../parallelScavenge/parallelScavengeHeap.cpp | 85 +--- .../parallelScavenge/parallelScavengeHeap.hpp | 40 +- .../parallelScavenge/psAdaptiveSizePolicy.cpp | 46 +- .../parallelScavenge/psAdaptiveSizePolicy.hpp | 6 +- .../parallelScavenge/psYoungGen.cpp | 13 +- .../share/vm/gc_interface/collectedHeap.cpp | 4 + .../src/share/vm/memory/collectorPolicy.cpp | 422 ++++++++++++------ .../src/share/vm/memory/collectorPolicy.hpp | 83 ++-- .../src/share/vm/memory/defNewGeneration.cpp | 6 +- .../src/share/vm/memory/genCollectedHeap.cpp | 2 +- hotspot/src/share/vm/memory/sharedHeap.cpp | 1 + hotspot/src/share/vm/memory/universe.cpp | 2 + hotspot/src/share/vm/prims/whitebox.cpp | 2 +- hotspot/src/share/vm/runtime/arguments.cpp | 6 +- .../gc/arguments/TestMaxHeapSizeTools.java | 33 +- hotspot/test/gc/arguments/TestMaxNewSize.java | 122 +++++ 28 files changed, 718 insertions(+), 428 deletions(-) create mode 100644 hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp create mode 100644 hotspot/test/gc/arguments/TestMaxNewSize.java diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp index c2aafb7bc20..a236a10efb3 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp @@ -47,8 +47,9 @@ // ConcurrentMarkSweepPolicy methods // -ConcurrentMarkSweepPolicy::ConcurrentMarkSweepPolicy() { - initialize_all(); +void ConcurrentMarkSweepPolicy::initialize_alignments() { + _space_alignment = _gen_alignment = (uintx)Generation::GenGrain; + _heap_alignment = compute_heap_alignment(); } void ConcurrentMarkSweepPolicy::initialize_generations() { diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp index 1483bca13eb..d26959f3d9f 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp @@ -29,10 +29,11 @@ class ConcurrentMarkSweepPolicy : public TwoGenerationCollectorPolicy { protected: + void initialize_alignments(); void initialize_generations(); public: - ConcurrentMarkSweepPolicy(); + ConcurrentMarkSweepPolicy() {} ConcurrentMarkSweepPolicy* as_concurrent_mark_sweep_policy() { return this; } diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp index 3f53067ca8d..85709465b3e 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -2008,7 +2008,7 @@ jint G1CollectedHeap::initialize() { size_t init_byte_size = collector_policy()->initial_heap_byte_size(); size_t max_byte_size = collector_policy()->max_heap_byte_size(); - size_t heap_alignment = collector_policy()->max_alignment(); + size_t heap_alignment = collector_policy()->heap_alignment(); // Ensure that the sizes are properly aligned. Universe::check_alignment(init_byte_size, HeapRegion::GrainBytes, "g1 heap"); diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp index ad1dce1750b..b4f9a0b0007 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp @@ -313,27 +313,38 @@ G1CollectorPolicy::G1CollectorPolicy() : // for the first time during initialization. _reserve_regions = 0; - initialize_all(); _collectionSetChooser = new CollectionSetChooser(); - _young_gen_sizer = new G1YoungGenSizer(); // Must be after call to initialize_flags +} + +void G1CollectorPolicy::initialize_alignments() { + _space_alignment = HeapRegion::GrainBytes; + size_t card_table_alignment = GenRemSet::max_alignment_constraint(GenRemSet::CardTable); + size_t page_size = UseLargePages ? os::large_page_size() : os::vm_page_size(); + _heap_alignment = MAX3(card_table_alignment, _space_alignment, page_size); } void G1CollectorPolicy::initialize_flags() { - _min_alignment = HeapRegion::GrainBytes; - size_t card_table_alignment = GenRemSet::max_alignment_constraint(GenRemSet::CardTable); - size_t page_size = UseLargePages ? os::large_page_size() : os::vm_page_size(); - _max_alignment = MAX3(card_table_alignment, _min_alignment, page_size); + if (G1HeapRegionSize != HeapRegion::GrainBytes) { + FLAG_SET_ERGO(uintx, G1HeapRegionSize, HeapRegion::GrainBytes); + } + if (SurvivorRatio < 1) { vm_exit_during_initialization("Invalid survivor ratio specified"); } CollectorPolicy::initialize_flags(); + _young_gen_sizer = new G1YoungGenSizer(); // Must be after call to initialize_flags } -G1YoungGenSizer::G1YoungGenSizer() : _sizer_kind(SizerDefaults), _adaptive_size(true) { - assert(G1NewSizePercent <= G1MaxNewSizePercent, "Min larger than max"); - assert(G1NewSizePercent > 0 && G1NewSizePercent < 100, "Min out of bounds"); - assert(G1MaxNewSizePercent > 0 && G1MaxNewSizePercent < 100, "Max out of bounds"); +void G1CollectorPolicy::post_heap_initialize() { + uintx max_regions = G1CollectedHeap::heap()->max_regions(); + size_t max_young_size = (size_t)_young_gen_sizer->max_young_length(max_regions) * HeapRegion::GrainBytes; + if (max_young_size != MaxNewSize) { + FLAG_SET_ERGO(uintx, MaxNewSize, max_young_size); + } +} +G1YoungGenSizer::G1YoungGenSizer() : _sizer_kind(SizerDefaults), _adaptive_size(true), + _min_desired_young_length(0), _max_desired_young_length(0) { if (FLAG_IS_CMDLINE(NewRatio)) { if (FLAG_IS_CMDLINE(NewSize) || FLAG_IS_CMDLINE(MaxNewSize)) { warning("-XX:NewSize and -XX:MaxNewSize override -XX:NewRatio"); @@ -344,8 +355,13 @@ G1YoungGenSizer::G1YoungGenSizer() : _sizer_kind(SizerDefaults), _adaptive_size( } } - if (FLAG_IS_CMDLINE(NewSize) && FLAG_IS_CMDLINE(MaxNewSize) && NewSize > MaxNewSize) { - vm_exit_during_initialization("Initial young gen size set larger than the maximum young gen size"); + if (NewSize > MaxNewSize) { + if (FLAG_IS_CMDLINE(MaxNewSize)) { + warning("NewSize (" SIZE_FORMAT "k) is greater than the MaxNewSize (" SIZE_FORMAT "k). " + "A new max generation size of " SIZE_FORMAT "k will be used.", + NewSize/K, MaxNewSize/K, NewSize/K); + } + MaxNewSize = NewSize; } if (FLAG_IS_CMDLINE(NewSize)) { @@ -378,34 +394,48 @@ uint G1YoungGenSizer::calculate_default_max_length(uint new_number_of_heap_regio return MAX2(1U, default_value); } -void G1YoungGenSizer::heap_size_changed(uint new_number_of_heap_regions) { - assert(new_number_of_heap_regions > 0, "Heap must be initialized"); +void G1YoungGenSizer::recalculate_min_max_young_length(uint number_of_heap_regions, uint* min_young_length, uint* max_young_length) { + assert(number_of_heap_regions > 0, "Heap must be initialized"); switch (_sizer_kind) { case SizerDefaults: - _min_desired_young_length = calculate_default_min_length(new_number_of_heap_regions); - _max_desired_young_length = calculate_default_max_length(new_number_of_heap_regions); + *min_young_length = calculate_default_min_length(number_of_heap_regions); + *max_young_length = calculate_default_max_length(number_of_heap_regions); break; case SizerNewSizeOnly: - _max_desired_young_length = calculate_default_max_length(new_number_of_heap_regions); - _max_desired_young_length = MAX2(_min_desired_young_length, _max_desired_young_length); + *max_young_length = calculate_default_max_length(number_of_heap_regions); + *max_young_length = MAX2(*min_young_length, *max_young_length); break; case SizerMaxNewSizeOnly: - _min_desired_young_length = calculate_default_min_length(new_number_of_heap_regions); - _min_desired_young_length = MIN2(_min_desired_young_length, _max_desired_young_length); + *min_young_length = calculate_default_min_length(number_of_heap_regions); + *min_young_length = MIN2(*min_young_length, *max_young_length); break; case SizerMaxAndNewSize: // Do nothing. Values set on the command line, don't update them at runtime. break; case SizerNewRatio: - _min_desired_young_length = new_number_of_heap_regions / (NewRatio + 1); - _max_desired_young_length = _min_desired_young_length; + *min_young_length = number_of_heap_regions / (NewRatio + 1); + *max_young_length = *min_young_length; break; default: ShouldNotReachHere(); } - assert(_min_desired_young_length <= _max_desired_young_length, "Invalid min/max young gen size values"); + assert(*min_young_length <= *max_young_length, "Invalid min/max young gen size values"); +} + +uint G1YoungGenSizer::max_young_length(uint number_of_heap_regions) { + // We need to pass the desired values because recalculation may not update these + // values in some cases. + uint temp = _min_desired_young_length; + uint result = _max_desired_young_length; + recalculate_min_max_young_length(number_of_heap_regions, &temp, &result); + return result; +} + +void G1YoungGenSizer::heap_size_changed(uint new_number_of_heap_regions) { + recalculate_min_max_young_length(new_number_of_heap_regions, &_min_desired_young_length, + &_max_desired_young_length); } void G1CollectorPolicy::init() { diff --git a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp index 037876e07e7..438bec82c51 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp @@ -136,8 +136,16 @@ private: uint calculate_default_min_length(uint new_number_of_heap_regions); uint calculate_default_max_length(uint new_number_of_heap_regions); + // Update the given values for minimum and maximum young gen length in regions + // given the number of heap regions depending on the kind of sizing algorithm. + void recalculate_min_max_young_length(uint number_of_heap_regions, uint* min_young_length, uint* max_young_length); + public: G1YoungGenSizer(); + // Calculate the maximum length of the young gen given the number of regions + // depending on the sizing algorithm. + uint max_young_length(uint number_of_heap_regions); + void heap_size_changed(uint new_number_of_heap_regions); uint min_desired_young_length() { return _min_desired_young_length; @@ -165,13 +173,9 @@ private: G1MMUTracker* _mmu_tracker; + void initialize_alignments(); void initialize_flags(); - void initialize_all() { - initialize_flags(); - initialize_size_info(); - } - CollectionSetChooser* _collectionSetChooser; double _full_collection_start_sec; @@ -931,6 +935,7 @@ public: // Calculates survivor space parameters. void update_survivors_policy(); + virtual void post_heap_initialize(); }; // This should move to some place more general... diff --git a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp index 00eec548995..e4f534ab5a2 100644 --- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp +++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp @@ -174,11 +174,6 @@ void HeapRegion::setup_heap_region_size(size_t initial_heap_size, size_t max_hea region_size = MAX_REGION_SIZE; } - if (region_size != G1HeapRegionSize) { - // Update the flag to make sure that PrintFlagsFinal logs the correct value - FLAG_SET_ERGO(uintx, G1HeapRegionSize, region_size); - } - // And recalculate the log. region_size_log = log2_long((jlong) region_size); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp index 996a522927b..90bf630fe36 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "gc_implementation/parallelScavenge/adjoiningGenerations.hpp" #include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp" +#include "gc_implementation/parallelScavenge/generationSizer.hpp" #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp" // If boundary moving is being used, create the young gen and old @@ -32,15 +33,17 @@ // the old behavior otherwise (with PSYoungGen and PSOldGen). AdjoiningGenerations::AdjoiningGenerations(ReservedSpace old_young_rs, - size_t init_low_byte_size, - size_t min_low_byte_size, - size_t max_low_byte_size, - size_t init_high_byte_size, - size_t min_high_byte_size, - size_t max_high_byte_size, + GenerationSizer* policy, size_t alignment) : - _virtual_spaces(old_young_rs, min_low_byte_size, - min_high_byte_size, alignment) { + _virtual_spaces(old_young_rs, policy->min_gen1_size(), + policy->min_gen0_size(), alignment) { + size_t init_low_byte_size = policy->initial_gen1_size(); + size_t min_low_byte_size = policy->min_gen1_size(); + size_t max_low_byte_size = policy->max_gen1_size(); + size_t init_high_byte_size = policy->initial_gen0_size(); + size_t min_high_byte_size = policy->min_gen0_size(); + size_t max_high_byte_size = policy->max_gen0_size(); + assert(min_low_byte_size <= init_low_byte_size && init_low_byte_size <= max_low_byte_size, "Parameter check"); assert(min_high_byte_size <= init_high_byte_size && diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp index 70afb9996ae..950baa1d53f 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp @@ -28,6 +28,7 @@ #include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp" #include "gc_implementation/parallelScavenge/asPSOldGen.hpp" #include "gc_implementation/parallelScavenge/asPSYoungGen.hpp" +#include "gc_implementation/parallelScavenge/generationSizer.hpp" // Contains two generations that both use an AdjoiningVirtualSpaces. @@ -56,14 +57,7 @@ class AdjoiningGenerations : public CHeapObj { bool request_young_gen_expansion(size_t desired_change_in_bytes); public: - AdjoiningGenerations(ReservedSpace rs, - size_t init_low_byte_size, - size_t min_low_byte_size, - size_t max_low_byte_size, - size_t init_high_byte_size, - size_t min_high_byte_size, - size_t max_high_bytes_size, - size_t alignment); + AdjoiningGenerations(ReservedSpace rs, GenerationSizer* policy, size_t alignment); // Accessors PSYoungGen* young_gen() { return _young_gen; } diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp index 6f7026e5a0c..9d2e8182e06 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp @@ -91,7 +91,7 @@ size_t ASPSOldGen::available_for_expansion() { ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); size_t result = gen_size_limit() - virtual_space()->committed_size(); - size_t result_aligned = align_size_down(result, heap->old_gen_alignment()); + size_t result_aligned = align_size_down(result, heap->generation_alignment()); return result_aligned; } @@ -102,7 +102,7 @@ size_t ASPSOldGen::available_for_contraction() { } ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); - const size_t gen_alignment = heap->old_gen_alignment(); + const size_t gen_alignment = heap->generation_alignment(); PSAdaptiveSizePolicy* policy = heap->size_policy(); const size_t working_size = used_in_bytes() + (size_t) policy->avg_promoted()->padded_average(); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp index a7b2eb28ef2..105772487c0 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp @@ -75,7 +75,7 @@ size_t ASPSYoungGen::available_for_expansion() { "generation size limit is wrong"); ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); size_t result = gen_size_limit() - current_committed_size; - size_t result_aligned = align_size_down(result, heap->young_gen_alignment()); + size_t result_aligned = align_size_down(result, heap->generation_alignment()); return result_aligned; } @@ -92,8 +92,8 @@ size_t ASPSYoungGen::available_for_contraction() { if (eden_space()->is_empty()) { // Respect the minimum size for eden and for the young gen as a whole. ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); - const size_t eden_alignment = heap->intra_heap_alignment(); - const size_t gen_alignment = heap->young_gen_alignment(); + const size_t eden_alignment = heap->space_alignment(); + const size_t gen_alignment = heap->generation_alignment(); assert(eden_space()->capacity_in_bytes() >= eden_alignment, "Alignment is wrong"); @@ -129,7 +129,7 @@ size_t ASPSYoungGen::available_for_contraction() { // to_space can be. size_t ASPSYoungGen::available_to_live() { ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); - const size_t alignment = heap->intra_heap_alignment(); + const size_t alignment = heap->space_alignment(); // Include any space that is committed but is not in eden. size_t available = pointer_delta(eden_space()->bottom(), @@ -293,7 +293,7 @@ void ASPSYoungGen::resize_spaces(size_t requested_eden_size, assert(eden_start < from_start, "Cannot push into from_space"); ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); - const size_t alignment = heap->intra_heap_alignment(); + const size_t alignment = heap->space_alignment(); const bool maintain_minimum = (requested_eden_size + 2 * requested_survivor_size) <= min_gen_size(); diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp new file mode 100644 index 00000000000..638460524eb --- /dev/null +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#include "precompiled.hpp" +#include "gc_implementation/parallelScavenge/generationSizer.hpp" +#include "memory/collectorPolicy.hpp" + +void GenerationSizer::trace_gen_sizes(const char* const str) { + if (TracePageSizes) { + tty->print_cr("%s: " SIZE_FORMAT "," SIZE_FORMAT " " + SIZE_FORMAT "," SIZE_FORMAT " " + SIZE_FORMAT, + str, + _min_gen1_size / K, _max_gen1_size / K, + _min_gen0_size / K, _max_gen0_size / K, + _max_heap_byte_size / K); + } +} + +void GenerationSizer::initialize_alignments() { + _space_alignment = _gen_alignment = default_gen_alignment(); + _heap_alignment = compute_heap_alignment(); +} + +void GenerationSizer::initialize_flags() { + // Do basic sizing work + TwoGenerationCollectorPolicy::initialize_flags(); + + assert(UseSerialGC || + !FLAG_IS_DEFAULT(ParallelGCThreads) || + (ParallelGCThreads > 0), + "ParallelGCThreads should be set before flag initialization"); + + // The survivor ratio's are calculated "raw", unlike the + // default gc, which adds 2 to the ratio value. We need to + // make sure the values are valid before using them. + if (MinSurvivorRatio < 3) { + FLAG_SET_ERGO(uintx, MinSurvivorRatio, 3); + } + + if (InitialSurvivorRatio < 3) { + FLAG_SET_ERGO(uintx, InitialSurvivorRatio, 3); + } +} + +void GenerationSizer::initialize_size_info() { + trace_gen_sizes("ps heap raw"); + const size_t page_sz = os::page_size_for_region(_min_heap_byte_size, + _max_heap_byte_size, + 8); + + // Can a page size be something else than a power of two? + assert(is_power_of_2((intptr_t)page_sz), "must be a power of 2"); + size_t new_alignment = round_to(page_sz, _gen_alignment); + if (new_alignment != _gen_alignment) { + _gen_alignment = new_alignment; + // Redo everything from the start + initialize_flags(); + } + TwoGenerationCollectorPolicy::initialize_size_info(); + + trace_gen_sizes("ps heap rnd"); +} diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp index f7be7671ff9..eb8c78a8c81 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp @@ -31,41 +31,17 @@ // TwoGenerationCollectorPolicy. Lets reuse it! class GenerationSizer : public TwoGenerationCollectorPolicy { - public: - GenerationSizer() { - // Partial init only! - initialize_flags(); - initialize_size_info(); - } + private: - void initialize_flags() { - // Do basic sizing work - TwoGenerationCollectorPolicy::initialize_flags(); + void trace_gen_sizes(const char* const str); - assert(UseSerialGC || - !FLAG_IS_DEFAULT(ParallelGCThreads) || - (ParallelGCThreads > 0), - "ParallelGCThreads should be set before flag initialization"); + // The alignment used for boundary between young gen and old gen + static size_t default_gen_alignment() { return 64 * K * HeapWordSize; } - // The survivor ratio's are calculated "raw", unlike the - // default gc, which adds 2 to the ratio value. We need to - // make sure the values are valid before using them. - if (MinSurvivorRatio < 3) { - MinSurvivorRatio = 3; - } + protected: - if (InitialSurvivorRatio < 3) { - InitialSurvivorRatio = 3; - } - } - - size_t min_young_gen_size() { return _min_gen0_size; } - size_t young_gen_size() { return _initial_gen0_size; } - size_t max_young_gen_size() { return _max_gen0_size; } - - size_t min_old_gen_size() { return _min_gen1_size; } - size_t old_gen_size() { return _initial_gen1_size; } - size_t max_old_gen_size() { return _max_gen1_size; } + void initialize_alignments(); + void initialize_flags(); + void initialize_size_info(); }; - #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GENERATIONSIZER_HPP diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp index e5d5229d30c..f93f2e8991f 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp @@ -52,76 +52,20 @@ PSGCAdaptivePolicyCounters* ParallelScavengeHeap::_gc_policy_counters = NULL; ParallelScavengeHeap* ParallelScavengeHeap::_psh = NULL; GCTaskManager* ParallelScavengeHeap::_gc_task_manager = NULL; -static void trace_gen_sizes(const char* const str, - size_t og_min, size_t og_max, - size_t yg_min, size_t yg_max) -{ - if (TracePageSizes) { - tty->print_cr("%s: " SIZE_FORMAT "," SIZE_FORMAT " " - SIZE_FORMAT "," SIZE_FORMAT " " - SIZE_FORMAT, - str, - og_min / K, og_max / K, - yg_min / K, yg_max / K, - (og_max + yg_max) / K); - } -} - jint ParallelScavengeHeap::initialize() { CollectedHeap::pre_initialize(); - // Cannot be initialized until after the flags are parsed - // GenerationSizer flag_parser; + // Initialize collector policy _collector_policy = new GenerationSizer(); + _collector_policy->initialize_all(); - size_t yg_min_size = _collector_policy->min_young_gen_size(); - size_t yg_max_size = _collector_policy->max_young_gen_size(); - size_t og_min_size = _collector_policy->min_old_gen_size(); - size_t og_max_size = _collector_policy->max_old_gen_size(); - - trace_gen_sizes("ps heap raw", - og_min_size, og_max_size, - yg_min_size, yg_max_size); - - const size_t og_page_sz = os::page_size_for_region(yg_min_size + og_min_size, - yg_max_size + og_max_size, - 8); - - const size_t og_align = set_alignment(_old_gen_alignment, og_page_sz); - const size_t yg_align = set_alignment(_young_gen_alignment, og_page_sz); - - // Update sizes to reflect the selected page size(s). - // - // NEEDS_CLEANUP. The default TwoGenerationCollectorPolicy uses NewRatio; it - // should check UseAdaptiveSizePolicy. Changes from generationSizer could - // move to the common code. - yg_min_size = align_size_up(yg_min_size, yg_align); - yg_max_size = align_size_up(yg_max_size, yg_align); - size_t yg_cur_size = - align_size_up(_collector_policy->young_gen_size(), yg_align); - yg_cur_size = MAX2(yg_cur_size, yg_min_size); - - og_min_size = align_size_up(og_min_size, og_align); - // Align old gen size down to preserve specified heap size. - assert(og_align == yg_align, "sanity"); - og_max_size = align_size_down(og_max_size, og_align); - og_max_size = MAX2(og_max_size, og_min_size); - size_t og_cur_size = - align_size_down(_collector_policy->old_gen_size(), og_align); - og_cur_size = MAX2(og_cur_size, og_min_size); - - trace_gen_sizes("ps heap rnd", - og_min_size, og_max_size, - yg_min_size, yg_max_size); - - const size_t heap_size = og_max_size + yg_max_size; - - ReservedSpace heap_rs = Universe::reserve_heap(heap_size, og_align); + const size_t heap_size = _collector_policy->max_heap_byte_size(); + ReservedSpace heap_rs = Universe::reserve_heap(heap_size, _collector_policy->heap_alignment()); MemTracker::record_virtual_memory_type((address)heap_rs.base(), mtJavaHeap); - os::trace_page_sizes("ps main", og_min_size + yg_min_size, - og_max_size + yg_max_size, og_page_sz, + os::trace_page_sizes("ps main", _collector_policy->min_heap_byte_size(), + heap_size, generation_alignment(), heap_rs.base(), heap_rs.size()); if (!heap_rs.is_reserved()) { @@ -142,12 +86,6 @@ jint ParallelScavengeHeap::initialize() { return JNI_ENOMEM; } - // Initial young gen size is 4 Mb - // - // XXX - what about flag_parser.young_gen_size()? - const size_t init_young_size = align_size_up(4 * M, yg_align); - yg_cur_size = MAX2(MIN2(init_young_size, yg_max_size), yg_cur_size); - // Make up the generations // Calculate the maximum size that a generation can grow. This // includes growth into the other generation. Note that the @@ -157,14 +95,7 @@ jint ParallelScavengeHeap::initialize() { double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0; double max_gc_minor_pause_sec = ((double) MaxGCMinorPauseMillis)/1000.0; - _gens = new AdjoiningGenerations(heap_rs, - og_cur_size, - og_min_size, - og_max_size, - yg_cur_size, - yg_min_size, - yg_max_size, - yg_align); + _gens = new AdjoiningGenerations(heap_rs, _collector_policy, generation_alignment()); _old_gen = _gens->old_gen(); _young_gen = _gens->young_gen(); @@ -176,7 +107,7 @@ jint ParallelScavengeHeap::initialize() { new PSAdaptiveSizePolicy(eden_capacity, initial_promo_size, young_gen()->to_space()->capacity_in_bytes(), - intra_heap_alignment(), + _collector_policy->gen_alignment(), max_gc_pause_sec, max_gc_minor_pause_sec, GCTimeRatio diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp index 2ef42c86660..51f40d8c62b 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp @@ -25,6 +25,7 @@ #ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_HPP #define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_HPP +#include "gc_implementation/parallelScavenge/generationSizer.hpp" #include "gc_implementation/parallelScavenge/objectStartArray.hpp" #include "gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp" #include "gc_implementation/parallelScavenge/psOldGen.hpp" @@ -32,13 +33,12 @@ #include "gc_implementation/shared/gcPolicyCounters.hpp" #include "gc_implementation/shared/gcWhen.hpp" #include "gc_interface/collectedHeap.inline.hpp" +#include "memory/collectorPolicy.hpp" #include "utilities/ostream.hpp" class AdjoiningGenerations; class GCHeapSummary; class GCTaskManager; -class GenerationSizer; -class CollectorPolicy; class PSAdaptiveSizePolicy; class PSHeapSummary; @@ -54,13 +54,8 @@ class ParallelScavengeHeap : public CollectedHeap { static ParallelScavengeHeap* _psh; - size_t _young_gen_alignment; - size_t _old_gen_alignment; - GenerationSizer* _collector_policy; - inline size_t set_alignment(size_t& var, size_t val); - // Collection of generations that are adjacent in the // space reserved for the heap. AdjoiningGenerations* _gens; @@ -80,15 +75,7 @@ class ParallelScavengeHeap : public CollectedHeap { HeapWord* mem_allocate_old_gen(size_t size); public: - ParallelScavengeHeap() : CollectedHeap(), _death_march_count(0) { - set_alignment(_young_gen_alignment, intra_heap_alignment()); - set_alignment(_old_gen_alignment, intra_heap_alignment()); - } - - // Return the (conservative) maximum heap alignment - static size_t conservative_max_heap_alignment() { - return GenCollectorPolicy::intra_heap_alignment(); - } + ParallelScavengeHeap() : CollectedHeap(), _death_march_count(0) { } // For use by VM operations enum CollectionType { @@ -120,13 +107,15 @@ class ParallelScavengeHeap : public CollectedHeap { void post_initialize(); void update_counters(); - // The alignment used for the various generations. - size_t young_gen_alignment() const { return _young_gen_alignment; } - size_t old_gen_alignment() const { return _old_gen_alignment; } - // The alignment used for eden and survivors within the young gen - // and for boundary between young gen and old gen. - size_t intra_heap_alignment() { return GenCollectorPolicy::intra_heap_alignment(); } + // The alignment used for the various areas + size_t space_alignment() { return _collector_policy->space_alignment(); } + size_t generation_alignment() { return _collector_policy->gen_alignment(); } + + // Return the (conservative) maximum heap alignment + static size_t conservative_max_heap_alignment() { + return CollectorPolicy::compute_heap_alignment(); + } size_t capacity() const; size_t used() const; @@ -261,11 +250,4 @@ class ParallelScavengeHeap : public CollectedHeap { }; }; -inline size_t ParallelScavengeHeap::set_alignment(size_t& var, size_t val) -{ - assert(is_power_of_2((intptr_t)val), "must be a power of 2"); - var = round_to(val, intra_heap_alignment()); - return var; -} - #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_HPP diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp index 1ffdf64e2aa..a2f2fa722bf 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp @@ -37,7 +37,7 @@ PSAdaptiveSizePolicy::PSAdaptiveSizePolicy(size_t init_eden_size, size_t init_promo_size, size_t init_survivor_size, - size_t intra_generation_alignment, + size_t space_alignment, double gc_pause_goal_sec, double gc_minor_pause_goal_sec, uint gc_cost_ratio) : @@ -47,7 +47,7 @@ PSAdaptiveSizePolicy::PSAdaptiveSizePolicy(size_t init_eden_size, gc_pause_goal_sec, gc_cost_ratio), _collection_cost_margin_fraction(AdaptiveSizePolicyCollectionCostMargin / 100.0), - _intra_generation_alignment(intra_generation_alignment), + _space_alignment(space_alignment), _live_at_last_full_gc(init_promo_size), _gc_minor_pause_goal_sec(gc_minor_pause_goal_sec), _latest_major_mutator_interval_seconds(0), @@ -352,11 +352,10 @@ void PSAdaptiveSizePolicy::compute_eden_space_size( } // Align everything and make a final limit check - const size_t alignment = _intra_generation_alignment; - desired_eden_size = align_size_up(desired_eden_size, alignment); - desired_eden_size = MAX2(desired_eden_size, alignment); + desired_eden_size = align_size_up(desired_eden_size, _space_alignment); + desired_eden_size = MAX2(desired_eden_size, _space_alignment); - eden_limit = align_size_down(eden_limit, alignment); + eden_limit = align_size_down(eden_limit, _space_alignment); // And one last limit check, now that we've aligned things. if (desired_eden_size > eden_limit) { @@ -560,11 +559,10 @@ void PSAdaptiveSizePolicy::compute_old_gen_free_space( } // Align everything and make a final limit check - const size_t alignment = _intra_generation_alignment; - desired_promo_size = align_size_up(desired_promo_size, alignment); - desired_promo_size = MAX2(desired_promo_size, alignment); + desired_promo_size = align_size_up(desired_promo_size, _space_alignment); + desired_promo_size = MAX2(desired_promo_size, _space_alignment); - promo_limit = align_size_down(promo_limit, alignment); + promo_limit = align_size_down(promo_limit, _space_alignment); // And one last limit check, now that we've aligned things. desired_promo_size = MIN2(desired_promo_size, promo_limit); @@ -649,7 +647,7 @@ void PSAdaptiveSizePolicy::adjust_promo_for_minor_pause_time(bool is_full_gc, } // If the desired eden size is as small as it will get, // try to adjust the old gen size. - if (*desired_eden_size_ptr <= _intra_generation_alignment) { + if (*desired_eden_size_ptr <= _space_alignment) { // Vary the old gen size to reduce the young gen pause. This // may not be a good idea. This is just a test. if (minor_pause_old_estimator()->decrement_will_decrease()) { @@ -754,7 +752,7 @@ void PSAdaptiveSizePolicy::adjust_eden_for_pause_time(bool is_full_gc, // If the promo size is at the minimum (i.e., the old gen // size will not actually decrease), consider changing the // young gen size. - if (*desired_promo_size_ptr < _intra_generation_alignment) { + if (*desired_promo_size_ptr < _space_alignment) { // If increasing the young generation will decrease the old gen // pause, do it. // During startup there is noise in the statistics for deciding @@ -1065,24 +1063,24 @@ size_t PSAdaptiveSizePolicy::eden_increment(size_t cur_eden) { size_t PSAdaptiveSizePolicy::eden_increment_aligned_up(size_t cur_eden) { size_t result = eden_increment(cur_eden, YoungGenerationSizeIncrement); - return align_size_up(result, _intra_generation_alignment); + return align_size_up(result, _space_alignment); } size_t PSAdaptiveSizePolicy::eden_increment_aligned_down(size_t cur_eden) { size_t result = eden_increment(cur_eden); - return align_size_down(result, _intra_generation_alignment); + return align_size_down(result, _space_alignment); } size_t PSAdaptiveSizePolicy::eden_increment_with_supplement_aligned_up( size_t cur_eden) { size_t result = eden_increment(cur_eden, YoungGenerationSizeIncrement + _young_gen_size_increment_supplement); - return align_size_up(result, _intra_generation_alignment); + return align_size_up(result, _space_alignment); } size_t PSAdaptiveSizePolicy::eden_decrement_aligned_down(size_t cur_eden) { size_t eden_heap_delta = eden_decrement(cur_eden); - return align_size_down(eden_heap_delta, _intra_generation_alignment); + return align_size_down(eden_heap_delta, _space_alignment); } size_t PSAdaptiveSizePolicy::eden_decrement(size_t cur_eden) { @@ -1104,24 +1102,24 @@ size_t PSAdaptiveSizePolicy::promo_increment(size_t cur_promo) { size_t PSAdaptiveSizePolicy::promo_increment_aligned_up(size_t cur_promo) { size_t result = promo_increment(cur_promo, TenuredGenerationSizeIncrement); - return align_size_up(result, _intra_generation_alignment); + return align_size_up(result, _space_alignment); } size_t PSAdaptiveSizePolicy::promo_increment_aligned_down(size_t cur_promo) { size_t result = promo_increment(cur_promo, TenuredGenerationSizeIncrement); - return align_size_down(result, _intra_generation_alignment); + return align_size_down(result, _space_alignment); } size_t PSAdaptiveSizePolicy::promo_increment_with_supplement_aligned_up( size_t cur_promo) { size_t result = promo_increment(cur_promo, TenuredGenerationSizeIncrement + _old_gen_size_increment_supplement); - return align_size_up(result, _intra_generation_alignment); + return align_size_up(result, _space_alignment); } size_t PSAdaptiveSizePolicy::promo_decrement_aligned_down(size_t cur_promo) { size_t promo_heap_delta = promo_decrement(cur_promo); - return align_size_down(promo_heap_delta, _intra_generation_alignment); + return align_size_down(promo_heap_delta, _space_alignment); } size_t PSAdaptiveSizePolicy::promo_decrement(size_t cur_promo) { @@ -1134,9 +1132,9 @@ uint PSAdaptiveSizePolicy::compute_survivor_space_size_and_threshold( bool is_survivor_overflow, uint tenuring_threshold, size_t survivor_limit) { - assert(survivor_limit >= _intra_generation_alignment, + assert(survivor_limit >= _space_alignment, "survivor_limit too small"); - assert((size_t)align_size_down(survivor_limit, _intra_generation_alignment) + assert((size_t)align_size_down(survivor_limit, _space_alignment) == survivor_limit, "survivor_limit not aligned"); // This method is called even if the tenuring threshold and survivor @@ -1200,8 +1198,8 @@ uint PSAdaptiveSizePolicy::compute_survivor_space_size_and_threshold( // We're trying to pad the survivor size as little as possible without // overflowing the survivor spaces. size_t target_size = align_size_up((size_t)_avg_survived->padded_average(), - _intra_generation_alignment); - target_size = MAX2(target_size, _intra_generation_alignment); + _space_alignment); + target_size = MAX2(target_size, _space_alignment); if (target_size > survivor_limit) { // Target size is bigger than we can handle. Let's also reduce diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp index d88af2bf6ef..3389911876f 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp @@ -91,7 +91,7 @@ class PSAdaptiveSizePolicy : public AdaptiveSizePolicy { // for making ergonomic decisions. double _latest_major_mutator_interval_seconds; - const size_t _intra_generation_alignment; // alignment for eden, survivors + const size_t _space_alignment; // alignment for eden, survivors const double _gc_minor_pause_goal_sec; // goal for maximum minor gc pause @@ -229,7 +229,7 @@ class PSAdaptiveSizePolicy : public AdaptiveSizePolicy { PSAdaptiveSizePolicy(size_t init_eden_size, size_t init_promo_size, size_t init_survivor_size, - size_t intra_generation_alignment, + size_t space_alignment, double gc_pause_goal_sec, double gc_minor_pause_goal_sec, uint gc_time_ratio); @@ -378,7 +378,7 @@ class PSAdaptiveSizePolicy : public AdaptiveSizePolicy { // remain almost full anyway (top() will be near end(), but there will be a // large filler object at the bottom). const size_t sz = gen_size / MinSurvivorRatio; - const size_t alignment = _intra_generation_alignment; + const size_t alignment = _space_alignment; return sz > alignment ? align_size_down(sz, alignment) : alignment; } diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp index 2d8697587ac..c1f5c298794 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp @@ -103,7 +103,7 @@ void PSYoungGen::initialize_work() { // Compute maximum space sizes for performance counters ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); - size_t alignment = heap->intra_heap_alignment(); + size_t alignment = heap->space_alignment(); size_t size = virtual_space()->reserved_size(); size_t max_survivor_size; @@ -156,8 +156,9 @@ void PSYoungGen::compute_initial_space_boundaries() { assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity"); // Compute sizes - size_t alignment = heap->intra_heap_alignment(); + size_t alignment = heap->space_alignment(); size_t size = virtual_space()->committed_size(); + assert(size >= 3 * alignment, "Young space is not large enough for eden + 2 survivors"); size_t survivor_size = size / InitialSurvivorRatio; survivor_size = align_size_down(survivor_size, alignment); @@ -207,7 +208,7 @@ void PSYoungGen::set_space_boundaries(size_t eden_size, size_t survivor_size) { #ifndef PRODUCT void PSYoungGen::space_invariants() { ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); - const size_t alignment = heap->intra_heap_alignment(); + const size_t alignment = heap->space_alignment(); // Currently, our eden size cannot shrink to zero guarantee(eden_space()->capacity_in_bytes() >= alignment, "eden too small"); @@ -491,7 +492,7 @@ void PSYoungGen::resize_spaces(size_t requested_eden_size, char* to_end = (char*)to_space()->end(); ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); - const size_t alignment = heap->intra_heap_alignment(); + const size_t alignment = heap->space_alignment(); const bool maintain_minimum = (requested_eden_size + 2 * requested_survivor_size) <= min_gen_size(); @@ -840,8 +841,8 @@ size_t PSYoungGen::available_to_min_gen() { size_t PSYoungGen::available_to_live() { size_t delta_in_survivor = 0; ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap(); - const size_t space_alignment = heap->intra_heap_alignment(); - const size_t gen_alignment = heap->young_gen_alignment(); + const size_t space_alignment = heap->space_alignment(); + const size_t gen_alignment = heap->generation_alignment(); MutableSpace* space_shrinking = NULL; if (from_space()->end() > to_space()->end()) { diff --git a/hotspot/src/share/vm/gc_interface/collectedHeap.cpp b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp index bbf5419fd0f..742e3b73be8 100644 --- a/hotspot/src/share/vm/gc_interface/collectedHeap.cpp +++ b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp @@ -469,6 +469,10 @@ void CollectedHeap::fill_with_objects(HeapWord* start, size_t words, bool zap) fill_with_object_impl(start, words, zap); } +void CollectedHeap::post_initialize() { + collector_policy()->post_heap_initialize(); +} + HeapWord* CollectedHeap::allocate_new_tlab(size_t size) { guarantee(false, "thread-local allocation buffers not supported"); return NULL; diff --git a/hotspot/src/share/vm/memory/collectorPolicy.cpp b/hotspot/src/share/vm/memory/collectorPolicy.cpp index 8cd11de6ef2..8c3e95a0550 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.cpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.cpp @@ -47,54 +47,107 @@ // CollectorPolicy methods. -void CollectorPolicy::initialize_flags() { - assert(_max_alignment >= _min_alignment, - err_msg("max_alignment: " SIZE_FORMAT " less than min_alignment: " SIZE_FORMAT, - _max_alignment, _min_alignment)); - assert(_max_alignment % _min_alignment == 0, - err_msg("max_alignment: " SIZE_FORMAT " not aligned by min_alignment: " SIZE_FORMAT, - _max_alignment, _min_alignment)); +CollectorPolicy::CollectorPolicy() : + _space_alignment(0), + _heap_alignment(0), + _initial_heap_byte_size(InitialHeapSize), + _max_heap_byte_size(MaxHeapSize), + _min_heap_byte_size(Arguments::min_heap_size()), + _max_heap_size_cmdline(false), + _size_policy(NULL), + _should_clear_all_soft_refs(false), + _all_soft_refs_clear(false) +{} - if (MaxHeapSize < InitialHeapSize) { - vm_exit_during_initialization("Incompatible initial and maximum heap sizes specified"); - } - - MinHeapDeltaBytes = align_size_up(MinHeapDeltaBytes, _min_alignment); +#ifdef ASSERT +void CollectorPolicy::assert_flags() { + assert(InitialHeapSize <= MaxHeapSize, "Ergonomics decided on incompatible initial and maximum heap sizes"); + assert(InitialHeapSize % _heap_alignment == 0, "InitialHeapSize alignment"); + assert(MaxHeapSize % _heap_alignment == 0, "MaxHeapSize alignment"); } -void CollectorPolicy::initialize_size_info() { - // User inputs from -mx and ms must be aligned - _min_heap_byte_size = align_size_up(Arguments::min_heap_size(), _min_alignment); - _initial_heap_byte_size = align_size_up(InitialHeapSize, _min_alignment); - _max_heap_byte_size = align_size_up(MaxHeapSize, _max_alignment); +void CollectorPolicy::assert_size_info() { + assert(InitialHeapSize == _initial_heap_byte_size, "Discrepancy between InitialHeapSize flag and local storage"); + assert(MaxHeapSize == _max_heap_byte_size, "Discrepancy between MaxHeapSize flag and local storage"); + assert(_max_heap_byte_size >= _min_heap_byte_size, "Ergonomics decided on incompatible minimum and maximum heap sizes"); + assert(_initial_heap_byte_size >= _min_heap_byte_size, "Ergonomics decided on incompatible initial and minimum heap sizes"); + assert(_max_heap_byte_size >= _initial_heap_byte_size, "Ergonomics decided on incompatible initial and maximum heap sizes"); + assert(_min_heap_byte_size % _heap_alignment == 0, "min_heap_byte_size alignment"); + assert(_initial_heap_byte_size % _heap_alignment == 0, "initial_heap_byte_size alignment"); + assert(_max_heap_byte_size % _heap_alignment == 0, "max_heap_byte_size alignment"); +} +#endif // ASSERT + +void CollectorPolicy::initialize_flags() { + assert(_space_alignment != 0, "Space alignment not set up properly"); + assert(_heap_alignment != 0, "Heap alignment not set up properly"); + assert(_heap_alignment >= _space_alignment, + err_msg("heap_alignment: " SIZE_FORMAT " less than space_alignment: " SIZE_FORMAT, + _heap_alignment, _space_alignment)); + assert(_heap_alignment % _space_alignment == 0, + err_msg("heap_alignment: " SIZE_FORMAT " not aligned by space_alignment: " SIZE_FORMAT, + _heap_alignment, _space_alignment)); + + if (FLAG_IS_CMDLINE(MaxHeapSize)) { + if (FLAG_IS_CMDLINE(InitialHeapSize) && InitialHeapSize > MaxHeapSize) { + vm_exit_during_initialization("Initial heap size set to a larger value than the maximum heap size"); + } + if (_min_heap_byte_size != 0 && MaxHeapSize < _min_heap_byte_size) { + vm_exit_during_initialization("Incompatible minimum and maximum heap sizes specified"); + } + _max_heap_size_cmdline = true; + } // Check heap parameter properties - if (_initial_heap_byte_size < M) { + if (InitialHeapSize < M) { vm_exit_during_initialization("Too small initial heap"); } - // Check heap parameter properties if (_min_heap_byte_size < M) { vm_exit_during_initialization("Too small minimum heap"); } - if (_initial_heap_byte_size <= NewSize) { - // make sure there is at least some room in old space - vm_exit_during_initialization("Too small initial heap for new size specified"); + + // User inputs from -Xmx and -Xms must be aligned + _min_heap_byte_size = align_size_up(_min_heap_byte_size, _heap_alignment); + uintx aligned_initial_heap_size = align_size_up(InitialHeapSize, _heap_alignment); + uintx aligned_max_heap_size = align_size_up(MaxHeapSize, _heap_alignment); + + // Write back to flags if the values changed + if (aligned_initial_heap_size != InitialHeapSize) { + FLAG_SET_ERGO(uintx, InitialHeapSize, aligned_initial_heap_size); } - if (_max_heap_byte_size < _min_heap_byte_size) { - vm_exit_during_initialization("Incompatible minimum and maximum heap sizes specified"); - } - if (_initial_heap_byte_size < _min_heap_byte_size) { - vm_exit_during_initialization("Incompatible minimum and initial heap sizes specified"); - } - if (_max_heap_byte_size < _initial_heap_byte_size) { - vm_exit_during_initialization("Incompatible initial and maximum heap sizes specified"); + if (aligned_max_heap_size != MaxHeapSize) { + FLAG_SET_ERGO(uintx, MaxHeapSize, aligned_max_heap_size); } + if (FLAG_IS_CMDLINE(InitialHeapSize) && _min_heap_byte_size != 0 && + InitialHeapSize < _min_heap_byte_size) { + vm_exit_during_initialization("Incompatible minimum and initial heap sizes specified"); + } + if (!FLAG_IS_DEFAULT(InitialHeapSize) && InitialHeapSize > MaxHeapSize) { + FLAG_SET_ERGO(uintx, MaxHeapSize, InitialHeapSize); + } else if (!FLAG_IS_DEFAULT(MaxHeapSize) && InitialHeapSize > MaxHeapSize) { + FLAG_SET_ERGO(uintx, InitialHeapSize, MaxHeapSize); + if (InitialHeapSize < _min_heap_byte_size) { + _min_heap_byte_size = InitialHeapSize; + } + } + + _initial_heap_byte_size = InitialHeapSize; + _max_heap_byte_size = MaxHeapSize; + + FLAG_SET_ERGO(uintx, MinHeapDeltaBytes, align_size_up(MinHeapDeltaBytes, _space_alignment)); + + DEBUG_ONLY(CollectorPolicy::assert_flags();) +} + +void CollectorPolicy::initialize_size_info() { if (PrintGCDetails && Verbose) { gclog_or_tty->print_cr("Minimum heap " SIZE_FORMAT " Initial heap " SIZE_FORMAT " Maximum heap " SIZE_FORMAT, _min_heap_byte_size, _initial_heap_byte_size, _max_heap_byte_size); } + + DEBUG_ONLY(CollectorPolicy::assert_size_info();) } bool CollectorPolicy::use_should_clear_all_soft_refs(bool v) { @@ -118,7 +171,7 @@ void CollectorPolicy::cleared_all_soft_refs() { _all_soft_refs_clear = true; } -size_t CollectorPolicy::compute_max_alignment() { +size_t CollectorPolicy::compute_heap_alignment() { // The card marking array and the offset arrays for old generations are // committed in os pages as well. Make sure they are entirely full (to // avoid partial page problems), e.g. if 512 bytes heap corresponds to 1 @@ -145,14 +198,21 @@ size_t CollectorPolicy::compute_max_alignment() { // GenCollectorPolicy methods. +GenCollectorPolicy::GenCollectorPolicy() : + _min_gen0_size(0), + _initial_gen0_size(0), + _max_gen0_size(0), + _gen_alignment(0), + _generations(NULL) +{} + size_t GenCollectorPolicy::scale_by_NewRatio_aligned(size_t base_size) { - return align_size_down_bounded(base_size / (NewRatio + 1), _min_alignment); + return align_size_down_bounded(base_size / (NewRatio + 1), _gen_alignment); } size_t GenCollectorPolicy::bound_minus_alignment(size_t desired_size, size_t maximum_size) { - size_t alignment = _min_alignment; - size_t max_minus = maximum_size - alignment; + size_t max_minus = maximum_size - _gen_alignment; return desired_size < max_minus ? desired_size : max_minus; } @@ -168,101 +228,181 @@ void GenCollectorPolicy::initialize_size_policy(size_t init_eden_size, GCTimeRatio); } -void GenCollectorPolicy::initialize_flags() { - // All sizes must be multiples of the generation granularity. - _min_alignment = (uintx) Generation::GenGrain; - _max_alignment = compute_max_alignment(); +size_t GenCollectorPolicy::young_gen_size_lower_bound() { + // The young generation must be aligned and have room for eden + two survivors + return align_size_up(3 * _space_alignment, _gen_alignment); +} +#ifdef ASSERT +void GenCollectorPolicy::assert_flags() { + CollectorPolicy::assert_flags(); + assert(NewSize >= _min_gen0_size, "Ergonomics decided on a too small young gen size"); + assert(NewSize <= MaxNewSize, "Ergonomics decided on incompatible initial and maximum young gen sizes"); + assert(FLAG_IS_DEFAULT(MaxNewSize) || MaxNewSize < MaxHeapSize, "Ergonomics decided on incompatible maximum young gen and heap sizes"); + assert(NewSize % _gen_alignment == 0, "NewSize alignment"); + assert(FLAG_IS_DEFAULT(MaxNewSize) || MaxNewSize % _gen_alignment == 0, "MaxNewSize alignment"); +} + +void TwoGenerationCollectorPolicy::assert_flags() { + GenCollectorPolicy::assert_flags(); + assert(OldSize + NewSize <= MaxHeapSize, "Ergonomics decided on incompatible generation and heap sizes"); + assert(OldSize % _gen_alignment == 0, "OldSize alignment"); +} + +void GenCollectorPolicy::assert_size_info() { + CollectorPolicy::assert_size_info(); + // GenCollectorPolicy::initialize_size_info may update the MaxNewSize + assert(MaxNewSize < MaxHeapSize, "Ergonomics decided on incompatible maximum young and heap sizes"); + assert(NewSize == _initial_gen0_size, "Discrepancy between NewSize flag and local storage"); + assert(MaxNewSize == _max_gen0_size, "Discrepancy between MaxNewSize flag and local storage"); + assert(_min_gen0_size <= _initial_gen0_size, "Ergonomics decided on incompatible minimum and initial young gen sizes"); + assert(_initial_gen0_size <= _max_gen0_size, "Ergonomics decided on incompatible initial and maximum young gen sizes"); + assert(_min_gen0_size % _gen_alignment == 0, "_min_gen0_size alignment"); + assert(_initial_gen0_size % _gen_alignment == 0, "_initial_gen0_size alignment"); + assert(_max_gen0_size % _gen_alignment == 0, "_max_gen0_size alignment"); +} + +void TwoGenerationCollectorPolicy::assert_size_info() { + GenCollectorPolicy::assert_size_info(); + assert(OldSize == _initial_gen1_size, "Discrepancy between OldSize flag and local storage"); + assert(_min_gen1_size <= _initial_gen1_size, "Ergonomics decided on incompatible minimum and initial old gen sizes"); + assert(_initial_gen1_size <= _max_gen1_size, "Ergonomics decided on incompatible initial and maximum old gen sizes"); + assert(_max_gen1_size % _gen_alignment == 0, "_max_gen1_size alignment"); + assert(_initial_gen1_size % _gen_alignment == 0, "_initial_gen1_size alignment"); + assert(_max_heap_byte_size <= (_max_gen0_size + _max_gen1_size), "Total maximum heap sizes must be sum of generation maximum sizes"); +} +#endif // ASSERT + +void GenCollectorPolicy::initialize_flags() { CollectorPolicy::initialize_flags(); - // All generational heaps have a youngest gen; handle those flags here. + assert(_gen_alignment != 0, "Generation alignment not set up properly"); + assert(_heap_alignment >= _gen_alignment, + err_msg("heap_alignment: " SIZE_FORMAT " less than gen_alignment: " SIZE_FORMAT, + _heap_alignment, _gen_alignment)); + assert(_gen_alignment % _space_alignment == 0, + err_msg("gen_alignment: " SIZE_FORMAT " not aligned by space_alignment: " SIZE_FORMAT, + _gen_alignment, _space_alignment)); + assert(_heap_alignment % _gen_alignment == 0, + err_msg("heap_alignment: " SIZE_FORMAT " not aligned by gen_alignment: " SIZE_FORMAT, + _heap_alignment, _gen_alignment)); - // Adjust max size parameters - if (NewSize > MaxNewSize) { - MaxNewSize = NewSize; + // All generational heaps have a youngest gen; handle those flags here + + // Make sure the heap is large enough for two generations + uintx smallest_new_size = young_gen_size_lower_bound(); + uintx smallest_heap_size = align_size_up(smallest_new_size + align_size_up(_space_alignment, _gen_alignment), + _heap_alignment); + if (MaxHeapSize < smallest_heap_size) { + FLAG_SET_ERGO(uintx, MaxHeapSize, smallest_heap_size); + _max_heap_byte_size = MaxHeapSize; + } + // If needed, synchronize _min_heap_byte size and _initial_heap_byte_size + if (_min_heap_byte_size < smallest_heap_size) { + _min_heap_byte_size = smallest_heap_size; + if (InitialHeapSize < _min_heap_byte_size) { + FLAG_SET_ERGO(uintx, InitialHeapSize, smallest_heap_size); + _initial_heap_byte_size = smallest_heap_size; + } } - NewSize = align_size_down(NewSize, _min_alignment); - MaxNewSize = align_size_down(MaxNewSize, _min_alignment); - // Check validity of heap flags - assert(NewSize % _min_alignment == 0, "eden space alignment"); - assert(MaxNewSize % _min_alignment == 0, "survivor space alignment"); + // Now take the actual NewSize into account. We will silently increase NewSize + // if the user specified a smaller value. + smallest_new_size = MAX2(smallest_new_size, (uintx)align_size_down(NewSize, _gen_alignment)); + if (smallest_new_size != NewSize) { + FLAG_SET_ERGO(uintx, NewSize, smallest_new_size); + } + _initial_gen0_size = NewSize; - if (NewSize < 3 * _min_alignment) { - // make sure there room for eden and two survivor spaces - vm_exit_during_initialization("Too small new size specified"); + if (!FLAG_IS_DEFAULT(MaxNewSize)) { + uintx min_new_size = MAX2(_gen_alignment, _min_gen0_size); + + if (MaxNewSize >= MaxHeapSize) { + // Make sure there is room for an old generation + uintx smaller_max_new_size = MaxHeapSize - _gen_alignment; + if (FLAG_IS_CMDLINE(MaxNewSize)) { + warning("MaxNewSize (" SIZE_FORMAT "k) is equal to or greater than the entire " + "heap (" SIZE_FORMAT "k). A new max generation size of " SIZE_FORMAT "k will be used.", + MaxNewSize/K, MaxHeapSize/K, smaller_max_new_size/K); + } + FLAG_SET_ERGO(uintx, MaxNewSize, smaller_max_new_size); + if (NewSize > MaxNewSize) { + FLAG_SET_ERGO(uintx, NewSize, MaxNewSize); + _initial_gen0_size = NewSize; + } + } else if (MaxNewSize < min_new_size) { + FLAG_SET_ERGO(uintx, MaxNewSize, min_new_size); + } else if (!is_size_aligned(MaxNewSize, _gen_alignment)) { + FLAG_SET_ERGO(uintx, MaxNewSize, align_size_down(MaxNewSize, _gen_alignment)); + } + _max_gen0_size = MaxNewSize; + } + + if (NewSize > MaxNewSize) { + // At this point this should only happen if the user specifies a large NewSize and/or + // a small (but not too small) MaxNewSize. + if (FLAG_IS_CMDLINE(MaxNewSize)) { + warning("NewSize (" SIZE_FORMAT "k) is greater than the MaxNewSize (" SIZE_FORMAT "k). " + "A new max generation size of " SIZE_FORMAT "k will be used.", + NewSize/K, MaxNewSize/K, NewSize/K); + } + FLAG_SET_ERGO(uintx, MaxNewSize, NewSize); + _max_gen0_size = MaxNewSize; } if (SurvivorRatio < 1 || NewRatio < 1) { vm_exit_during_initialization("Invalid young gen ratio specified"); } + + DEBUG_ONLY(GenCollectorPolicy::assert_flags();) } void TwoGenerationCollectorPolicy::initialize_flags() { GenCollectorPolicy::initialize_flags(); - OldSize = align_size_down(OldSize, _min_alignment); + if (!is_size_aligned(OldSize, _gen_alignment)) { + FLAG_SET_ERGO(uintx, OldSize, align_size_down(OldSize, _gen_alignment)); + } - if (FLAG_IS_CMDLINE(OldSize) && FLAG_IS_DEFAULT(NewSize)) { + if (FLAG_IS_CMDLINE(OldSize) && FLAG_IS_DEFAULT(MaxHeapSize)) { // NewRatio will be used later to set the young generation size so we use // it to calculate how big the heap should be based on the requested OldSize // and NewRatio. assert(NewRatio > 0, "NewRatio should have been set up earlier"); size_t calculated_heapsize = (OldSize / NewRatio) * (NewRatio + 1); - calculated_heapsize = align_size_up(calculated_heapsize, _max_alignment); - MaxHeapSize = calculated_heapsize; - InitialHeapSize = calculated_heapsize; + calculated_heapsize = align_size_up(calculated_heapsize, _heap_alignment); + FLAG_SET_ERGO(uintx, MaxHeapSize, calculated_heapsize); + _max_heap_byte_size = MaxHeapSize; + FLAG_SET_ERGO(uintx, InitialHeapSize, calculated_heapsize); + _initial_heap_byte_size = InitialHeapSize; } - MaxHeapSize = align_size_up(MaxHeapSize, _max_alignment); // adjust max heap size if necessary if (NewSize + OldSize > MaxHeapSize) { - if (FLAG_IS_CMDLINE(MaxHeapSize)) { + if (_max_heap_size_cmdline) { // somebody set a maximum heap size with the intention that we should not // exceed it. Adjust New/OldSize as necessary. uintx calculated_size = NewSize + OldSize; double shrink_factor = (double) MaxHeapSize / calculated_size; - // align - NewSize = align_size_down((uintx) (NewSize * shrink_factor), _min_alignment); - // OldSize is already aligned because above we aligned MaxHeapSize to - // _max_alignment, and we just made sure that NewSize is aligned to - // _min_alignment. In initialize_flags() we verified that _max_alignment - // is a multiple of _min_alignment. - OldSize = MaxHeapSize - NewSize; - } else { - MaxHeapSize = NewSize + OldSize; - } - } - // need to do this again - MaxHeapSize = align_size_up(MaxHeapSize, _max_alignment); + uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment); + FLAG_SET_ERGO(uintx, NewSize, MAX2(young_gen_size_lower_bound(), smaller_new_size)); + _initial_gen0_size = NewSize; - // adjust max heap size if necessary - if (NewSize + OldSize > MaxHeapSize) { - if (FLAG_IS_CMDLINE(MaxHeapSize)) { - // somebody set a maximum heap size with the intention that we should not - // exceed it. Adjust New/OldSize as necessary. - uintx calculated_size = NewSize + OldSize; - double shrink_factor = (double) MaxHeapSize / calculated_size; - // align - NewSize = align_size_down((uintx) (NewSize * shrink_factor), _min_alignment); // OldSize is already aligned because above we aligned MaxHeapSize to - // _max_alignment, and we just made sure that NewSize is aligned to - // _min_alignment. In initialize_flags() we verified that _max_alignment - // is a multiple of _min_alignment. - OldSize = MaxHeapSize - NewSize; + // _heap_alignment, and we just made sure that NewSize is aligned to + // _gen_alignment. In initialize_flags() we verified that _heap_alignment + // is a multiple of _gen_alignment. + FLAG_SET_ERGO(uintx, OldSize, MaxHeapSize - NewSize); } else { - MaxHeapSize = NewSize + OldSize; + FLAG_SET_ERGO(uintx, MaxHeapSize, align_size_up(NewSize + OldSize, _heap_alignment)); + _max_heap_byte_size = MaxHeapSize; } } - // need to do this again - MaxHeapSize = align_size_up(MaxHeapSize, _max_alignment); always_do_update_barrier = UseConcMarkSweepGC; - // Check validity of heap flags - assert(OldSize % _min_alignment == 0, "old space alignment"); - assert(MaxHeapSize % _max_alignment == 0, "maximum heap alignment"); + DEBUG_ONLY(TwoGenerationCollectorPolicy::assert_flags();) } // Values set on the command line win over any ergonomically @@ -277,7 +417,7 @@ void TwoGenerationCollectorPolicy::initialize_flags() { void GenCollectorPolicy::initialize_size_info() { CollectorPolicy::initialize_size_info(); - // _min_alignment is used for alignment within a generation. + // _space_alignment is used for alignment within a generation. // There is additional alignment done down stream for some // collectors that sometimes causes unwanted rounding up of // generations sizes. @@ -285,35 +425,8 @@ void GenCollectorPolicy::initialize_size_info() { // Determine maximum size of gen0 size_t max_new_size = 0; - if (FLAG_IS_CMDLINE(MaxNewSize) || FLAG_IS_ERGO(MaxNewSize)) { - if (MaxNewSize < _min_alignment) { - max_new_size = _min_alignment; - } - if (MaxNewSize >= _max_heap_byte_size) { - max_new_size = align_size_down(_max_heap_byte_size - _min_alignment, - _min_alignment); - warning("MaxNewSize (" SIZE_FORMAT "k) is equal to or " - "greater than the entire heap (" SIZE_FORMAT "k). A " - "new generation size of " SIZE_FORMAT "k will be used.", - MaxNewSize/K, _max_heap_byte_size/K, max_new_size/K); - } else { - max_new_size = align_size_down(MaxNewSize, _min_alignment); - } - - // The case for FLAG_IS_ERGO(MaxNewSize) could be treated - // specially at this point to just use an ergonomically set - // MaxNewSize to set max_new_size. For cases with small - // heaps such a policy often did not work because the MaxNewSize - // was larger than the entire heap. The interpretation given - // to ergonomically set flags is that the flags are set - // by different collectors for their own special needs but - // are not allowed to badly shape the heap. This allows the - // different collectors to decide what's best for themselves - // without having to factor in the overall heap shape. It - // can be the case in the future that the collectors would - // only make "wise" ergonomics choices and this policy could - // just accept those choices. The choices currently made are - // not always "wise". + if (!FLAG_IS_DEFAULT(MaxNewSize)) { + max_new_size = MaxNewSize; } else { max_new_size = scale_by_NewRatio_aligned(_max_heap_byte_size); // Bound the maximum size by NewSize below (since it historically @@ -382,11 +495,22 @@ void GenCollectorPolicy::initialize_size_info() { _min_gen0_size = MIN2(_min_gen0_size, _initial_gen0_size); } + // Write back to flags if necessary + if (NewSize != _initial_gen0_size) { + FLAG_SET_ERGO(uintx, NewSize, _initial_gen0_size); + } + + if (MaxNewSize != _max_gen0_size) { + FLAG_SET_ERGO(uintx, MaxNewSize, _max_gen0_size); + } + if (PrintGCDetails && Verbose) { gclog_or_tty->print_cr("1: Minimum gen0 " SIZE_FORMAT " Initial gen0 " SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT, _min_gen0_size, _initial_gen0_size, _max_gen0_size); } + + DEBUG_ONLY(GenCollectorPolicy::assert_size_info();) } // Call this method during the sizing of the gen1 to make @@ -404,14 +528,15 @@ bool TwoGenerationCollectorPolicy::adjust_gen0_sizes(size_t* gen0_size_ptr, bool result = false; if ((*gen1_size_ptr + *gen0_size_ptr) > heap_size) { + uintx smallest_new_size = young_gen_size_lower_bound(); if ((heap_size < (*gen0_size_ptr + min_gen1_size)) && - (heap_size >= min_gen1_size + _min_alignment)) { + (heap_size >= min_gen1_size + smallest_new_size)) { // Adjust gen0 down to accommodate min_gen1_size - *gen0_size_ptr = align_size_down_bounded(heap_size - min_gen1_size, _min_alignment); + *gen0_size_ptr = align_size_down_bounded(heap_size - min_gen1_size, _gen_alignment); assert(*gen0_size_ptr > 0, "Min gen0 is too large"); result = true; } else { - *gen1_size_ptr = align_size_down_bounded(heap_size - *gen0_size_ptr, _min_alignment); + *gen1_size_ptr = align_size_down_bounded(heap_size - *gen0_size_ptr, _gen_alignment); } } return result; @@ -432,36 +557,31 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { // The maximum gen1 size can be determined from the maximum gen0 // and maximum heap size since no explicit flags exits // for setting the gen1 maximum. - _max_gen1_size = _max_heap_byte_size - _max_gen0_size; - _max_gen1_size = - MAX2((uintx)align_size_down(_max_gen1_size, _min_alignment), _min_alignment); + _max_gen1_size = MAX2(_max_heap_byte_size - _max_gen0_size, _gen_alignment); + // If no explicit command line flag has been set for the // gen1 size, use what is left for gen1. - if (FLAG_IS_DEFAULT(OldSize) || FLAG_IS_ERGO(OldSize)) { - // The user has not specified any value or ergonomics - // has chosen a value (which may or may not be consistent + if (!FLAG_IS_CMDLINE(OldSize)) { + // The user has not specified any value but the ergonomics + // may have chosen a value (which may or may not be consistent // with the overall heap size). In either case make // the minimum, maximum and initial sizes consistent // with the gen0 sizes and the overall heap sizes. - assert(_min_heap_byte_size > _min_gen0_size, - "gen0 has an unexpected minimum size"); - _min_gen1_size = _min_heap_byte_size - _min_gen0_size; - _min_gen1_size = - MAX2((uintx)align_size_down(_min_gen1_size, _min_alignment), _min_alignment); - _initial_gen1_size = _initial_heap_byte_size - _initial_gen0_size; - _initial_gen1_size = - MAX2((uintx)align_size_down(_initial_gen1_size, _min_alignment), _min_alignment); + _min_gen1_size = MAX2(_min_heap_byte_size - _min_gen0_size, _gen_alignment); + _initial_gen1_size = MAX2(_initial_heap_byte_size - _initial_gen0_size, _gen_alignment); + // _max_gen1_size has already been made consistent above + FLAG_SET_ERGO(uintx, OldSize, _initial_gen1_size); } else { // It's been explicitly set on the command line. Use the // OldSize and then determine the consequences. - _min_gen1_size = OldSize; + _min_gen1_size = MIN2(OldSize, _min_heap_byte_size - _min_gen0_size); _initial_gen1_size = OldSize; // If the user has explicitly set an OldSize that is inconsistent // with other command line flags, issue a warning. // The generation minimums and the overall heap mimimum should - // be within one heap alignment. - if ((_min_gen1_size + _min_gen0_size + _min_alignment) < _min_heap_byte_size) { + // be within one generation alignment. + if ((_min_gen1_size + _min_gen0_size + _gen_alignment) < _min_heap_byte_size) { warning("Inconsistency between minimum heap size and minimum " "generation sizes: using minimum heap = " SIZE_FORMAT, _min_heap_byte_size); @@ -475,7 +595,7 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { // If there is an inconsistency between the OldSize and the minimum and/or // initial size of gen0, since OldSize was explicitly set, OldSize wins. if (adjust_gen0_sizes(&_min_gen0_size, &_min_gen1_size, - _min_heap_byte_size, OldSize)) { + _min_heap_byte_size, _min_gen1_size)) { if (PrintGCDetails && Verbose) { gclog_or_tty->print_cr("2: Minimum gen0 " SIZE_FORMAT " Initial gen0 " SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT, @@ -484,7 +604,7 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { } // Initial size if (adjust_gen0_sizes(&_initial_gen0_size, &_initial_gen1_size, - _initial_heap_byte_size, OldSize)) { + _initial_heap_byte_size, _initial_gen1_size)) { if (PrintGCDetails && Verbose) { gclog_or_tty->print_cr("3: Minimum gen0 " SIZE_FORMAT " Initial gen0 " SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT, @@ -499,11 +619,26 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { _initial_gen1_size = MAX2(_initial_gen1_size, _min_gen1_size); _initial_gen1_size = MIN2(_initial_gen1_size, _max_gen1_size); + // Write back to flags if necessary + if (NewSize != _initial_gen0_size) { + FLAG_SET_ERGO(uintx, NewSize, _max_gen0_size); + } + + if (MaxNewSize != _max_gen0_size) { + FLAG_SET_ERGO(uintx, MaxNewSize, _max_gen0_size); + } + + if (OldSize != _initial_gen1_size) { + FLAG_SET_ERGO(uintx, OldSize, _initial_gen1_size); + } + if (PrintGCDetails && Verbose) { gclog_or_tty->print_cr("Minimum gen1 " SIZE_FORMAT " Initial gen1 " SIZE_FORMAT " Maximum gen1 " SIZE_FORMAT, _min_gen1_size, _initial_gen1_size, _max_gen1_size); } + + DEBUG_ONLY(TwoGenerationCollectorPolicy::assert_size_info();) } HeapWord* GenCollectorPolicy::mem_allocate_work(size_t size, @@ -826,8 +961,9 @@ bool GenCollectorPolicy::should_try_older_generation_allocation( // MarkSweepPolicy methods // -MarkSweepPolicy::MarkSweepPolicy() { - initialize_all(); +void MarkSweepPolicy::initialize_alignments() { + _space_alignment = _gen_alignment = (uintx)Generation::GenGrain; + _heap_alignment = compute_heap_alignment(); } void MarkSweepPolicy::initialize_generations() { diff --git a/hotspot/src/share/vm/memory/collectorPolicy.hpp b/hotspot/src/share/vm/memory/collectorPolicy.hpp index bbfccdd644c..509702319d0 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.hpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.hpp @@ -61,17 +61,23 @@ class CollectorPolicy : public CHeapObj { protected: GCPolicyCounters* _gc_policy_counters; - // Requires that the concrete subclass sets the alignment constraints - // before calling. + virtual void initialize_alignments() = 0; virtual void initialize_flags(); virtual void initialize_size_info(); + DEBUG_ONLY(virtual void assert_flags();) + DEBUG_ONLY(virtual void assert_size_info();) + size_t _initial_heap_byte_size; size_t _max_heap_byte_size; size_t _min_heap_byte_size; - size_t _min_alignment; - size_t _max_alignment; + size_t _space_alignment; + size_t _heap_alignment; + + // Needed to keep information if MaxHeapSize was set on the command line + // when the flag value is aligned etc by ergonomics + bool _max_heap_size_cmdline; // The sizing of the heap are controlled by a sizing policy. AdaptiveSizePolicy* _size_policy; @@ -87,23 +93,20 @@ class CollectorPolicy : public CHeapObj { // mem_allocate() where it returns op.result() bool _all_soft_refs_clear; - CollectorPolicy() : - _min_alignment(1), - _max_alignment(1), - _initial_heap_byte_size(0), - _max_heap_byte_size(0), - _min_heap_byte_size(0), - _size_policy(NULL), - _should_clear_all_soft_refs(false), - _all_soft_refs_clear(false) - {} + CollectorPolicy(); public: - // Return maximum heap alignment that may be imposed by the policy - static size_t compute_max_alignment(); + virtual void initialize_all() { + initialize_alignments(); + initialize_flags(); + initialize_size_info(); + } - size_t min_alignment() { return _min_alignment; } - size_t max_alignment() { return _max_alignment; } + // Return maximum heap alignment that may be imposed by the policy + static size_t compute_heap_alignment(); + + size_t space_alignment() { return _space_alignment; } + size_t heap_alignment() { return _heap_alignment; } size_t initial_heap_byte_size() { return _initial_heap_byte_size; } size_t max_heap_byte_size() { return _max_heap_byte_size; } @@ -195,6 +198,9 @@ class CollectorPolicy : public CHeapObj { return false; } + // Do any updates required to global flags that are due to heap initialization + // changes + virtual void post_heap_initialize() = 0; }; class ClearedAllSoftRefs : public StackObj { @@ -219,6 +225,10 @@ class GenCollectorPolicy : public CollectorPolicy { size_t _initial_gen0_size; size_t _max_gen0_size; + // _gen_alignment and _space_alignment will have the same value most of the + // time. When using large pages they can differ. + size_t _gen_alignment; + GenerationSpec **_generations; // Return true if an allocation should be attempted in the older @@ -229,23 +239,31 @@ class GenCollectorPolicy : public CollectorPolicy { void initialize_flags(); void initialize_size_info(); + DEBUG_ONLY(void assert_flags();) + DEBUG_ONLY(void assert_size_info();) + // Try to allocate space by expanding the heap. virtual HeapWord* expand_heap_and_allocate(size_t size, bool is_tlab); - // Scale the base_size by NewRation according to + // Compute max heap alignment + size_t compute_max_alignment(); + + // Scale the base_size by NewRatio according to // result = base_size / (NewRatio + 1) // and align by min_alignment() size_t scale_by_NewRatio_aligned(size_t base_size); - // Bound the value by the given maximum minus the - // min_alignment. + // Bound the value by the given maximum minus the min_alignment size_t bound_minus_alignment(size_t desired_size, size_t maximum_size); public: + GenCollectorPolicy(); + // Accessors size_t min_gen0_size() { return _min_gen0_size; } size_t initial_gen0_size() { return _initial_gen0_size; } size_t max_gen0_size() { return _max_gen0_size; } + size_t gen_alignment() { return _gen_alignment; } virtual int number_of_generations() = 0; @@ -256,14 +274,15 @@ class GenCollectorPolicy : public CollectorPolicy { virtual GenCollectorPolicy* as_generation_policy() { return this; } - virtual void initialize_generations() = 0; + virtual void initialize_generations() { }; virtual void initialize_all() { - initialize_flags(); - initialize_size_info(); + CollectorPolicy::initialize_all(); initialize_generations(); } + size_t young_gen_size_lower_bound(); + HeapWord* mem_allocate_work(size_t size, bool is_tlab, bool* gc_overhead_limit_was_exceeded); @@ -275,10 +294,8 @@ class GenCollectorPolicy : public CollectorPolicy { size_t init_promo_size, size_t init_survivor_size); - // The alignment used for eden and survivors within the young gen - // and for boundary between young gen and old gen. - static size_t intra_heap_alignment() { - return 64 * K * HeapWordSize; + virtual void post_heap_initialize() { + assert(_max_gen0_size == MaxNewSize, "Should be taken care of by initialize_size_info"); } }; @@ -296,9 +313,14 @@ class TwoGenerationCollectorPolicy : public GenCollectorPolicy { void initialize_flags(); void initialize_size_info(); - void initialize_generations() { ShouldNotReachHere(); } + + DEBUG_ONLY(void assert_flags();) + DEBUG_ONLY(void assert_size_info();) public: + TwoGenerationCollectorPolicy() : GenCollectorPolicy(), _min_gen1_size(0), + _initial_gen1_size(0), _max_gen1_size(0) {} + // Accessors size_t min_gen1_size() { return _min_gen1_size; } size_t initial_gen1_size() { return _initial_gen1_size; } @@ -321,10 +343,11 @@ class TwoGenerationCollectorPolicy : public GenCollectorPolicy { class MarkSweepPolicy : public TwoGenerationCollectorPolicy { protected: + void initialize_alignments(); void initialize_generations(); public: - MarkSweepPolicy(); + MarkSweepPolicy() {} MarkSweepPolicy* as_mark_sweep_policy() { return this; } diff --git a/hotspot/src/share/vm/memory/defNewGeneration.cpp b/hotspot/src/share/vm/memory/defNewGeneration.cpp index 0b4af29a3e3..ca3ff46b167 100644 --- a/hotspot/src/share/vm/memory/defNewGeneration.cpp +++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp @@ -204,7 +204,7 @@ DefNewGeneration::DefNewGeneration(ReservedSpace rs, // Compute the maximum eden and survivor space sizes. These sizes // are computed assuming the entire reserved space is committed. // These values are exported as performance counters. - uintx alignment = GenCollectedHeap::heap()->collector_policy()->min_alignment(); + uintx alignment = GenCollectedHeap::heap()->collector_policy()->space_alignment(); uintx size = _virtual_space.reserved_size(); _max_survivor_size = compute_survivor_size(size, alignment); _max_eden_size = size - (2*_max_survivor_size); @@ -235,7 +235,7 @@ void DefNewGeneration::compute_space_boundaries(uintx minimum_eden_size, bool clear_space, bool mangle_space) { uintx alignment = - GenCollectedHeap::heap()->collector_policy()->min_alignment(); + GenCollectedHeap::heap()->collector_policy()->space_alignment(); // If the spaces are being cleared (only done at heap initialization // currently), the survivor spaces need not be empty. @@ -473,7 +473,7 @@ size_t DefNewGeneration::free() const { } size_t DefNewGeneration::max_capacity() const { - const size_t alignment = GenCollectedHeap::heap()->collector_policy()->min_alignment(); + const size_t alignment = GenCollectedHeap::heap()->collector_policy()->space_alignment(); const size_t reserved_bytes = reserved().byte_size(); return reserved_bytes - compute_survivor_size(reserved_bytes, alignment); } diff --git a/hotspot/src/share/vm/memory/genCollectedHeap.cpp b/hotspot/src/share/vm/memory/genCollectedHeap.cpp index 2b84542ef48..aa6f24bd23e 100644 --- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp +++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp @@ -111,7 +111,7 @@ jint GenCollectedHeap::initialize() { int n_covered_regions = 0; ReservedSpace heap_rs; - size_t heap_alignment = collector_policy()->max_alignment(); + size_t heap_alignment = collector_policy()->heap_alignment(); heap_address = allocate(heap_alignment, &total_reserved, &n_covered_regions, &heap_rs); diff --git a/hotspot/src/share/vm/memory/sharedHeap.cpp b/hotspot/src/share/vm/memory/sharedHeap.cpp index 79455db9b6e..47ebc180c8e 100644 --- a/hotspot/src/share/vm/memory/sharedHeap.cpp +++ b/hotspot/src/share/vm/memory/sharedHeap.cpp @@ -247,6 +247,7 @@ void SharedHeap::set_barrier_set(BarrierSet* bs) { } void SharedHeap::post_initialize() { + CollectedHeap::post_initialize(); ref_processing_init(); } diff --git a/hotspot/src/share/vm/memory/universe.cpp b/hotspot/src/share/vm/memory/universe.cpp index 18c9733076c..5dc76f703d3 100644 --- a/hotspot/src/share/vm/memory/universe.cpp +++ b/hotspot/src/share/vm/memory/universe.cpp @@ -765,6 +765,7 @@ jint Universe::initialize_heap() { } else if (UseG1GC) { #if INCLUDE_ALL_GCS G1CollectorPolicy* g1p = new G1CollectorPolicy(); + g1p->initialize_all(); G1CollectedHeap* g1h = new G1CollectedHeap(g1p); Universe::_collectedHeap = g1h; #else // INCLUDE_ALL_GCS @@ -789,6 +790,7 @@ jint Universe::initialize_heap() { } else { // default old generation gc_policy = new MarkSweepPolicy(); } + gc_policy->initialize_all(); Universe::_collectedHeap = new GenCollectedHeap(gc_policy); } diff --git a/hotspot/src/share/vm/prims/whitebox.cpp b/hotspot/src/share/vm/prims/whitebox.cpp index 6f6a2000a3f..556de7ec96a 100644 --- a/hotspot/src/share/vm/prims/whitebox.cpp +++ b/hotspot/src/share/vm/prims/whitebox.cpp @@ -105,7 +105,7 @@ WB_ENTRY(void, WB_PrintHeapSizes(JNIEnv* env, jobject o)) { gclog_or_tty->print_cr("Minimum heap "SIZE_FORMAT" Initial heap " SIZE_FORMAT" Maximum heap "SIZE_FORMAT" Min alignment "SIZE_FORMAT" Max alignment "SIZE_FORMAT, p->min_heap_byte_size(), p->initial_heap_byte_size(), p->max_heap_byte_size(), - p->min_alignment(), p->max_alignment()); + p->space_alignment(), p->heap_alignment()); } WB_END diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp index 1e82e5bdca8..39f94be5c79 100644 --- a/hotspot/src/share/vm/runtime/arguments.cpp +++ b/hotspot/src/share/vm/runtime/arguments.cpp @@ -1505,7 +1505,7 @@ void Arguments::set_conservative_max_heap_alignment() { } #endif // INCLUDE_ALL_GCS _conservative_max_heap_alignment = MAX3(heap_alignment, os::max_page_size(), - CollectorPolicy::compute_max_alignment()); + CollectorPolicy::compute_heap_alignment()); } void Arguments::set_ergonomics_flags() { @@ -2165,6 +2165,10 @@ bool Arguments::check_vm_args_consistency() { #if INCLUDE_ALL_GCS if (UseG1GC) { + status = status && verify_percentage(G1NewSizePercent, "G1NewSizePercent"); + status = status && verify_percentage(G1MaxNewSizePercent, "G1MaxNewSizePercent"); + status = status && verify_interval(G1NewSizePercent, 0, G1MaxNewSizePercent, "G1NewSizePercent"); + status = status && verify_percentage(InitiatingHeapOccupancyPercent, "InitiatingHeapOccupancyPercent"); status = status && verify_min_value(G1RefProcDrainInterval, 1, diff --git a/hotspot/test/gc/arguments/TestMaxHeapSizeTools.java b/hotspot/test/gc/arguments/TestMaxHeapSizeTools.java index cb7d841355e..0e07f794194 100644 --- a/hotspot/test/gc/arguments/TestMaxHeapSizeTools.java +++ b/hotspot/test/gc/arguments/TestMaxHeapSizeTools.java @@ -64,32 +64,29 @@ class TestMaxHeapSizeTools { long newPlusOldSize = values[0] + values[1]; long smallValue = newPlusOldSize / 2; long largeValue = newPlusOldSize * 2; + long maxHeapSize = largeValue + (2 * 1024 * 1024); // -Xms is not set - checkErgonomics(new String[] { gcflag, "-Xmx16M" }, values, -1, -1); - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-XX:InitialHeapSize=" + smallValue }, values, smallValue, smallValue); - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-XX:InitialHeapSize=" + largeValue }, values, -1, largeValue); - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-XX:InitialHeapSize=0" }, values, -1, -1); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize }, values, -1, -1); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-XX:InitialHeapSize=" + smallValue }, values, -1, smallValue); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-XX:InitialHeapSize=" + largeValue }, values, -1, largeValue); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-XX:InitialHeapSize=0" }, values, -1, -1); // -Xms is set to zero - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms0" }, values, -1, -1); - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms0", "-XX:InitialHeapSize=" + smallValue }, values, smallValue, smallValue); - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms0", "-XX:InitialHeapSize=" + largeValue }, values, -1, largeValue); - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms0", "-XX:InitialHeapSize=0" }, values, -1, -1); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms0" }, values, -1, -1); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms0", "-XX:InitialHeapSize=" + smallValue }, values, -1, smallValue); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms0", "-XX:InitialHeapSize=" + largeValue }, values, -1, largeValue); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms0", "-XX:InitialHeapSize=0" }, values, -1, -1); // -Xms is set to small value - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + smallValue }, values, -1, -1); - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + smallValue, "-XX:InitialHeapSize=" + smallValue }, values, smallValue, smallValue); - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + smallValue, "-XX:InitialHeapSize=" + largeValue }, values, smallValue, largeValue); - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + smallValue, "-XX:InitialHeapSize=0" }, values, smallValue, -1); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + smallValue }, values, -1, -1); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + smallValue, "-XX:InitialHeapSize=" + smallValue }, values, smallValue, smallValue); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + smallValue, "-XX:InitialHeapSize=" + largeValue }, values, smallValue, largeValue); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + smallValue, "-XX:InitialHeapSize=0" }, values, smallValue, -1); // -Xms is set to large value - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + largeValue }, values, largeValue, largeValue); - // the next case has already been checked elsewhere and gives an error - // checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + largeValue, "-XX:InitialHeapSize=" + smallValue }, values, smallValue, smallValue); - // the next case has already been checked elsewhere too - // checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + largeValue, "-XX:InitialHeapSize=" + largeValue }, values, values[0], largeValue); - checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + largeValue, "-XX:InitialHeapSize=0" }, values, largeValue, -1); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + largeValue }, values, largeValue, largeValue); + checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + largeValue, "-XX:InitialHeapSize=0" }, values, largeValue, -1); } private static long align_up(long value, long alignment) { diff --git a/hotspot/test/gc/arguments/TestMaxNewSize.java b/hotspot/test/gc/arguments/TestMaxNewSize.java new file mode 100644 index 00000000000..af20cb819e3 --- /dev/null +++ b/hotspot/test/gc/arguments/TestMaxNewSize.java @@ -0,0 +1,122 @@ +/* +* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* This code is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License version 2 only, as +* published by the Free Software Foundation. +* +* This code is distributed in the hope that it will be useful, but WITHOUT +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +* version 2 for more details (a copy is included in the LICENSE file that +* accompanied this code). +* +* You should have received a copy of the GNU General Public License version +* 2 along with this work; if not, write to the Free Software Foundation, +* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +* +* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +* or visit www.oracle.com if you need additional information or have any +* questions. +*/ + +/* + * @test TestMaxNewSize + * @key gc + * @bug 7057939 + * @summary Make sure that MaxNewSize always has a useful value after argument + * processing. + * @library /testlibrary + * @build TestMaxNewSize + * @run main TestMaxNewSize -XX:+UseSerialGC + * @run main TestMaxNewSize -XX:+UseParallelGC + * @run main TestMaxNewSize -XX:+UseConcMarkSweepGC + * @run main TestMaxNewSize -XX:+UseG1GC + * @author thomas.schatzl@oracle.com, jesper.wilhelmsson@oracle.com + */ + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import java.math.BigInteger; + +import java.util.ArrayList; +import java.util.Arrays; + +import com.oracle.java.testlibrary.*; + +public class TestMaxNewSize { + + private static void checkMaxNewSize(String[] flags, int heapsize) throws Exception { + BigInteger actual = new BigInteger(getMaxNewSize(flags)); + System.out.println(actual); + if (actual.compareTo(new BigInteger((new Long(heapsize)).toString())) == 1) { + throw new RuntimeException("MaxNewSize value set to \"" + actual + + "\", expected otherwise when running with the following flags: " + Arrays.asList(flags).toString()); + } + } + + private static void checkIncompatibleNewSize(String[] flags) throws Exception { + ArrayList finalargs = new ArrayList(); + finalargs.addAll(Arrays.asList(flags)); + finalargs.add("-version"); + + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(finalargs.toArray(new String[0])); + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + output.shouldContain("Initial young gen size set larger than the maximum young gen size"); + } + + private static boolean isRunningG1(String[] args) { + for (int i = 0; i < args.length; i++) { + if (args[i].contains("+UseG1GC")) { + return true; + } + } + return false; + } + + private static String getMaxNewSize(String[] flags) throws Exception { + ArrayList finalargs = new ArrayList(); + finalargs.addAll(Arrays.asList(flags)); + if (isRunningG1(flags)) { + finalargs.add("-XX:G1HeapRegionSize=1M"); + } + finalargs.add("-XX:+PrintFlagsFinal"); + finalargs.add("-version"); + + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(finalargs.toArray(new String[0])); + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + output.shouldHaveExitValue(0); + String stdout = output.getStdout(); + //System.out.println(stdout); + return getFlagValue("MaxNewSize", stdout); + } + + private static String getFlagValue(String flag, String where) { + Matcher m = Pattern.compile(flag + "\\s+:?=\\s+\\d+").matcher(where); + if (!m.find()) { + throw new RuntimeException("Could not find value for flag " + flag + " in output string"); + } + String match = m.group(); + return match.substring(match.lastIndexOf(" ") + 1, match.length()); + } + + public static void main(String args[]) throws Exception { + String gcName = args[0]; + final int M32 = 32 * 1024 * 1024; + final int M64 = 64 * 1024 * 1024; + final int M96 = 96 * 1024 * 1024; + final int M128 = 128 * 1024 * 1024; + checkMaxNewSize(new String[] { gcName, "-Xmx128M" }, M128); + checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewRatio=5" }, M128); + checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewSize=32M" }, M128); + checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:OldSize=96M" }, M128); + checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:MaxNewSize=32M" }, M32); + checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewSize=32M", "-XX:MaxNewSize=32M" }, M32); + checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewRatio=6", "-XX:MaxNewSize=32M" }, M32); + checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-Xms96M" }, M128); + checkMaxNewSize(new String[] { gcName, "-Xmx96M", "-Xms96M" }, M96); + checkMaxNewSize(new String[] { gcName, "-XX:NewSize=128M", "-XX:MaxNewSize=50M"}, M128); + } +} From 53cdc28a02fcf3df17b2d07ce4cd289524ac4265 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Fri, 1 Nov 2013 21:45:02 +0400 Subject: [PATCH 010/145] 8026491: Typos in string literals Reviewed-by: alexsch, anthony --- .../macosx/classes/com/apple/laf/AquaFileChooserUI.java | 2 +- .../classes/com/apple/laf/resources/aqua.properties | 2 +- .../plugins/common/StandardMetadataFormatResources.java | 2 +- .../sun/jmx/snmp/daemon/SnmpSubBulkRequestHandler.java | 4 ++-- .../sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.java | 4 ++-- .../com/sun/jmx/snmp/daemon/SnmpSubRequestHandler.java | 4 ++-- .../sun/tools/example/debug/gui/CommandInterpreter.java | 4 ++-- jdk/src/share/classes/com/sun/tools/script/shell/init.js | 2 +- .../com/sun/tools/script/shell/messages.properties | 2 +- .../javax/management/modelmbean/RequiredModelMBean.java | 4 ++-- jdk/src/share/classes/javax/swing/KeyboardManager.java | 2 +- .../classes/javax/swing/SortingFocusTraversalPolicy.java | 2 +- .../share/classes/javax/swing/text/AbstractDocument.java | 4 ++-- jdk/src/share/classes/sun/awt/AppContext.java | 2 +- .../management/snmp/jvminstr/JVM_MANAGEMENT_MIB_IMPL.java | 4 ++-- jdk/src/share/classes/sun/misc/ExtensionDependency.java | 2 +- jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java | 4 ++-- .../classes/sun/security/jgss/krb5/InitialToken.java | 2 +- .../classes/sun/security/jgss/spnego/SpNegoContext.java | 8 ++++---- .../share/demo/jfc/FileChooserDemo/FileChooserDemo.java | 4 ++-- .../share/native/sun/security/pkcs11/wrapper/p11_util.c | 6 +++--- jdk/src/share/sample/nio/chatserver/ClientReader.java | 2 +- jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java | 2 +- .../windows/classes/sun/nio/ch/WindowsSelectorImpl.java | 2 +- .../classes/sun/security/krb5/internal/tools/Klist.java | 2 +- .../classes/sun/security/krb5/internal/tools/Ktab.java | 4 ++-- 26 files changed, 41 insertions(+), 41 deletions(-) diff --git a/jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java b/jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java index be4b5b72a32..5669d10b1a4 100644 --- a/jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java +++ b/jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java @@ -227,7 +227,7 @@ public class AquaFileChooserUI extends FileChooserUI { // Exist in basic.properties (though we might want to override) fileDescriptionText = UIManager.getString("FileChooser.fileDescriptionText"); directoryDescriptionText = UIManager.getString("FileChooser.directoryDescriptionText"); - newFolderErrorText = getString("FileChooser.newFolderErrorText", "Error occured during folder creation"); + newFolderErrorText = getString("FileChooser.newFolderErrorText", "Error occurred during folder creation"); saveButtonText = UIManager.getString("FileChooser.saveButtonText"); openButtonText = UIManager.getString("FileChooser.openButtonText"); diff --git a/jdk/src/macosx/classes/com/apple/laf/resources/aqua.properties b/jdk/src/macosx/classes/com/apple/laf/resources/aqua.properties index 17f7a94584a..ac147020ce7 100644 --- a/jdk/src/macosx/classes/com/apple/laf/resources/aqua.properties +++ b/jdk/src/macosx/classes/com/apple/laf/resources/aqua.properties @@ -38,7 +38,7 @@ ############ FILE CHOOSER STRINGS ############# FileChooser.fileDescription.textAndMnemonic=Generic File FileChooser.directoryDescription.textAndMnemonic=Directory -FileChooser.newFolderError.textAndMnemonic=Error occured during folder creation +FileChooser.newFolderError.textAndMnemonic=Error occurred during folder creation FileChooser.newFolderErrorSeparator= : FileChooser.acceptAllFileFilter.textAndMnemonic=All Files FileChooser.cancelButton.textAndMnemonic=Cancel diff --git a/jdk/src/share/classes/com/sun/imageio/plugins/common/StandardMetadataFormatResources.java b/jdk/src/share/classes/com/sun/imageio/plugins/common/StandardMetadataFormatResources.java index 96f099cf222..00bf1ee323e 100644 --- a/jdk/src/share/classes/com/sun/imageio/plugins/common/StandardMetadataFormatResources.java +++ b/jdk/src/share/classes/com/sun/imageio/plugins/common/StandardMetadataFormatResources.java @@ -123,7 +123,7 @@ public class StandardMetadataFormatResources extends ListResourceBundle { "The vertical position, in millimeters, where the image should be rendered on media " }, { "HorizontalPixelOffset", - "The horizonal position, in pixels, where the image should be rendered onto a raster display" }, + "The horizontal position, in pixels, where the image should be rendered onto a raster display" }, { "VerticalPixelOffset", "The vertical position, in pixels, where the image should be rendered onto a raster display" }, diff --git a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubBulkRequestHandler.java b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubBulkRequestHandler.java index 6dc479f242c..aa349526456 100644 --- a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubBulkRequestHandler.java +++ b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubBulkRequestHandler.java @@ -111,7 +111,7 @@ class SnmpSubBulkRequestHandler extends SnmpSubRequestHandler { if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) { SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(), "run", "[" + Thread.currentThread() + - "]:an Snmp error occured during the operation", x); + "]:an Snmp error occurred during the operation", x); } } catch(Exception x) { @@ -119,7 +119,7 @@ class SnmpSubBulkRequestHandler extends SnmpSubRequestHandler { if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) { SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(), "run", "[" + Thread.currentThread() + - "]:a generic error occured during the operation", x); + "]:a generic error occurred during the operation", x); } } if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) { diff --git a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.java b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.java index 3ff95f6a001..99eebaa8c22 100644 --- a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.java +++ b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.java @@ -127,7 +127,7 @@ class SnmpSubNextRequestHandler extends SnmpSubRequestHandler { if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) { SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(), "run", "[" + Thread.currentThread() + - "]:an Snmp error occured during the operation", x); + "]:an Snmp error occurred during the operation", x); } } catch(Exception x) { @@ -135,7 +135,7 @@ class SnmpSubNextRequestHandler extends SnmpSubRequestHandler { if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) { SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(), "run", "[" + Thread.currentThread() + - "]:a generic error occured during the operation", x); + "]:a generic error occurred during the operation", x); } } if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) { diff --git a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubRequestHandler.java b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubRequestHandler.java index 0b981311358..391d528f876 100644 --- a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubRequestHandler.java +++ b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubRequestHandler.java @@ -231,7 +231,7 @@ class SnmpSubRequestHandler implements SnmpDefinitions, Runnable { if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) { SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(), "run", "[" + Thread.currentThread() + - "]:an Snmp error occured during the operation", x); + "]:an Snmp error occurred during the operation", x); } } catch(Exception x) { @@ -239,7 +239,7 @@ class SnmpSubRequestHandler implements SnmpDefinitions, Runnable { if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) { SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(), "run", "[" + Thread.currentThread() + - "]:a generic error occured during the operation", x); + "]:a generic error occurred during the operation", x); } } if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) { diff --git a/jdk/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java b/jdk/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java index b0494c282df..1b164209c82 100644 --- a/jdk/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java +++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java @@ -377,7 +377,7 @@ public class CommandInterpreter { env.failure("Attempt to launch main class \"" + clname + "\" failed."); } } else { - env.failure("No main class specifed and no current default defined."); + env.failure("No main class specified and no current default defined."); } } else { clname = t.nextToken(); @@ -428,7 +428,7 @@ public class CommandInterpreter { env.failure("Attempt to attach to port \"" + portName + "\" failed."); } } else { - env.failure("No port specifed and no current default defined."); + env.failure("No port specified and no current default defined."); } } else { portName = t.nextToken(); diff --git a/jdk/src/share/classes/com/sun/tools/script/shell/init.js b/jdk/src/share/classes/com/sun/tools/script/shell/init.js index ae2cdc42d95..ced3ba06367 100644 --- a/jdk/src/share/classes/com/sun/tools/script/shell/init.js +++ b/jdk/src/share/classes/com/sun/tools/script/shell/init.js @@ -806,7 +806,7 @@ function XSLTransform(inp, style, out) { out = arguments[2]; break; default: - println("XSL tranform requires 2 or 3 arguments"); + println("XSL transform requires 2 or 3 arguments"); return; } diff --git a/jdk/src/share/classes/com/sun/tools/script/shell/messages.properties b/jdk/src/share/classes/com/sun/tools/script/shell/messages.properties index 9caf20efd41..4494f73b73b 100644 --- a/jdk/src/share/classes/com/sun/tools/script/shell/messages.properties +++ b/jdk/src/share/classes/com/sun/tools/script/shell/messages.properties @@ -36,7 +36,7 @@ engine.not.found=\ script engine for language {0} can not be found engine.info=\ - Language {0} {1} implemention "{2}" {3} + Language {0} {1} implementation "{2}" {3} encoding.unsupported=\ encoding {0} is not supported diff --git a/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java b/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java index 0afd70f9423..60916ed938b 100644 --- a/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java +++ b/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java @@ -360,7 +360,7 @@ public class RequiredModelMBean MODELMBEAN_LOGGER.logp(Level.FINER, RequiredModelMBean.class.getName(), "setManagedResource(Object,String)", - "Managed Resouce Type is not supported: " + mr_type); + "Managed Resource Type is not supported: " + mr_type); } throw new InvalidTargetObjectTypeException(mr_type); } @@ -369,7 +369,7 @@ public class RequiredModelMBean MODELMBEAN_LOGGER.logp(Level.FINER, RequiredModelMBean.class.getName(), "setManagedResource(Object,String)", - "Managed Resouce is valid"); + "Managed Resource is valid"); } managedResource = mr; diff --git a/jdk/src/share/classes/javax/swing/KeyboardManager.java b/jdk/src/share/classes/javax/swing/KeyboardManager.java index 3ce79226a5f..afbd93e734e 100644 --- a/jdk/src/share/classes/javax/swing/KeyboardManager.java +++ b/jdk/src/share/classes/javax/swing/KeyboardManager.java @@ -208,7 +208,7 @@ class KeyboardManager { public boolean fireKeyboardAction(KeyEvent e, boolean pressed, Container topAncestor) { if (e.isConsumed()) { - System.out.println("Aquired pre-used event!"); + System.out.println("Acquired pre-used event!"); Thread.dumpStack(); } diff --git a/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java b/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java index cbdfc015a19..45b3766c33e 100644 --- a/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java +++ b/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java @@ -116,7 +116,7 @@ public class SortingFocusTraversalPolicy index = Collections.binarySearch(cycle, aComponent, comparator); } catch (ClassCastException e) { if (log.isLoggable(PlatformLogger.Level.FINE)) { - log.fine("### During the binary search for " + aComponent + " the exception occured: ", e); + log.fine("### During the binary search for " + aComponent + " the exception occurred: ", e); } return -1; } diff --git a/jdk/src/share/classes/javax/swing/text/AbstractDocument.java b/jdk/src/share/classes/javax/swing/text/AbstractDocument.java index 5ccd80d95e5..71e9d5d8c60 100644 --- a/jdk/src/share/classes/javax/swing/text/AbstractDocument.java +++ b/jdk/src/share/classes/javax/swing/text/AbstractDocument.java @@ -1367,7 +1367,7 @@ public abstract class AbstractDocument implements Document, Serializable { currWriter = Thread.currentThread(); numWriters = 1; } catch (InterruptedException e) { - throw new Error("Interrupted attempt to aquire write lock"); + throw new Error("Interrupted attempt to acquire write lock"); } } @@ -1409,7 +1409,7 @@ public abstract class AbstractDocument implements Document, Serializable { } numReaders += 1; } catch (InterruptedException e) { - throw new Error("Interrupted attempt to aquire read lock"); + throw new Error("Interrupted attempt to acquire read lock"); } } diff --git a/jdk/src/share/classes/sun/awt/AppContext.java b/jdk/src/share/classes/sun/awt/AppContext.java index e0f232e5c0c..b7bfc8072c2 100644 --- a/jdk/src/share/classes/sun/awt/AppContext.java +++ b/jdk/src/share/classes/sun/awt/AppContext.java @@ -430,7 +430,7 @@ public final class AppContext { try { w.dispose(); } catch (Throwable t) { - log.finer("exception occured while disposing app context", t); + log.finer("exception occurred while disposing app context", t); } } AccessController.doPrivileged(new PrivilegedAction() { diff --git a/jdk/src/share/classes/sun/management/snmp/jvminstr/JVM_MANAGEMENT_MIB_IMPL.java b/jdk/src/share/classes/sun/management/snmp/jvminstr/JVM_MANAGEMENT_MIB_IMPL.java index 37837b24db9..3a70921c109 100644 --- a/jdk/src/share/classes/sun/management/snmp/jvminstr/JVM_MANAGEMENT_MIB_IMPL.java +++ b/jdk/src/share/classes/sun/management/snmp/jvminstr/JVM_MANAGEMENT_MIB_IMPL.java @@ -188,7 +188,7 @@ public class JVM_MANAGEMENT_MIB_IMPL extends JVM_MANAGEMENT_MIB { sendTrap(trap, list); }catch(Exception e) { log.error("handleNotification", - "Exception occured : " + e); + "Exception occurred : " + e); } } } @@ -243,7 +243,7 @@ public class JVM_MANAGEMENT_MIB_IMPL extends JVM_MANAGEMENT_MIB { adaptor.snmpV2Trap(peer, trap, list, null); }catch(Exception e) { log.error("sendTrap", - "Exception occured while sending trap to [" + + "Exception occurred while sending trap to [" + target + "]. Exception : " + e); log.debug("sendTrap",e); } diff --git a/jdk/src/share/classes/sun/misc/ExtensionDependency.java b/jdk/src/share/classes/sun/misc/ExtensionDependency.java index 86f4308c9c3..f09b3ac117e 100644 --- a/jdk/src/share/classes/sun/misc/ExtensionDependency.java +++ b/jdk/src/share/classes/sun/misc/ExtensionDependency.java @@ -265,7 +265,7 @@ public class ExtensionDependency { * the jar file. *

* - * @param extensionName key in the attibute list + * @param extensionName key in the attribute list * @param attr manifest file attributes * @param file installed extension jar file to compare the requested * extension against. diff --git a/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java b/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java index a9649c7fca9..6b997e42647 100644 --- a/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java +++ b/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java @@ -1132,7 +1132,7 @@ public class RMIGenerator implements RMIConstants, Generator { throws IOException { if (types.length != names.length) { - throw new Error("paramter type and name arrays different sizes"); + throw new Error("parameter type and name arrays different sizes"); } for (int i = 0; i < types.length; i++) { @@ -1213,7 +1213,7 @@ public class RMIGenerator implements RMIConstants, Generator { throws IOException { if (types.length != names.length) { - throw new Error("paramter type and name arrays different sizes"); + throw new Error("parameter type and name arrays different sizes"); } boolean readObject = false; diff --git a/jdk/src/share/classes/sun/security/jgss/krb5/InitialToken.java b/jdk/src/share/classes/sun/security/jgss/krb5/InitialToken.java index c15ddd23529..7b34ff83914 100644 --- a/jdk/src/share/classes/sun/security/jgss/krb5/InitialToken.java +++ b/jdk/src/share/classes/sun/security/jgss/krb5/InitialToken.java @@ -192,7 +192,7 @@ abstract class InitialToken extends Krb5Token { if (krbCredMessage.length > 0x0000ffff) throw new GSSException(GSSException.FAILURE, -1, - "Incorrect messsage length"); + "Incorrect message length"); writeLittleEndian(krbCredMessage.length, temp); checksumBytes[pos++] = temp[0]; diff --git a/jdk/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java b/jdk/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java index 0312a1fbf76..1acc3a9a06b 100644 --- a/jdk/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java +++ b/jdk/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java @@ -360,7 +360,7 @@ public class SpNegoContext implements GSSContextSpi { if (internal_mech == null) { // return wth failure throw new GSSException(errorCode, -1, - "supported mechansim from server is null"); + "supported mechanism from server is null"); } // get the negotiated result @@ -911,7 +911,7 @@ public class SpNegoContext implements GSSContextSpi { return mechContext.isEstablished(); } else { if (DEBUG) { - System.out.println("The underlying mechansim context has " + + System.out.println("The underlying mechanism context has " + "not been initialized"); } return false; @@ -1024,7 +1024,7 @@ public class SpNegoContext implements GSSContextSpi { return peerName; } else { if (DEBUG) { - System.out.println("The underlying mechansim context has " + + System.out.println("The underlying mechanism context has " + "not been initialized"); } return null; @@ -1040,7 +1040,7 @@ public class SpNegoContext implements GSSContextSpi { return myName; } else { if (DEBUG) { - System.out.println("The underlying mechansim context has " + + System.out.println("The underlying mechanism context has " + "not been initialized"); } return null; diff --git a/jdk/src/share/demo/jfc/FileChooserDemo/FileChooserDemo.java b/jdk/src/share/demo/jfc/FileChooserDemo/FileChooserDemo.java index e492e09e032..24c5533f9a1 100644 --- a/jdk/src/share/demo/jfc/FileChooserDemo/FileChooserDemo.java +++ b/jdk/src/share/demo/jfc/FileChooserDemo/FileChooserDemo.java @@ -450,9 +450,9 @@ public class FileChooserDemo extends JPanel implements ActionListener { "User cancelled operation. No file was chosen."); } else if (retval == ERROR_OPTION) { JOptionPane.showMessageDialog(frame, - "An error occured. No file was chosen."); + "An error occurred. No file was chosen."); } else { - JOptionPane.showMessageDialog(frame, "Unknown operation occured."); + JOptionPane.showMessageDialog(frame, "Unknown operation occurred."); } } diff --git a/jdk/src/share/native/sun/security/pkcs11/wrapper/p11_util.c b/jdk/src/share/native/sun/security/pkcs11/wrapper/p11_util.c index 8889f740d0e..79d5250390d 100644 --- a/jdk/src/share/native/sun/security/pkcs11/wrapper/p11_util.c +++ b/jdk/src/share/native/sun/security/pkcs11/wrapper/p11_util.c @@ -598,16 +598,16 @@ void jAttributeArrayToCKAttributeArray(JNIEnv *env, jobjectArray jArray, CK_ATTR throwOutOfMemoryError(env, 0); return; } - TRACE1(", converting %d attibutes", jLength); + TRACE1(", converting %d attributes", jLength); for (i=0; i<(*ckpLength); i++) { - TRACE1(", getting %d. attibute", i); + TRACE1(", getting %d. attribute", i); jAttribute = (*env)->GetObjectArrayElement(env, jArray, i); if ((*env)->ExceptionCheck(env)) { freeCKAttributeArray(*ckpArray, i); return; } TRACE1(", jAttribute = %d", jAttribute); - TRACE1(", converting %d. attibute", i); + TRACE1(", converting %d. attribute", i); (*ckpArray)[i] = jAttributeToCKAttribute(env, jAttribute); if ((*env)->ExceptionCheck(env)) { freeCKAttributeArray(*ckpArray, i); diff --git a/jdk/src/share/sample/nio/chatserver/ClientReader.java b/jdk/src/share/sample/nio/chatserver/ClientReader.java index de7f639e81b..822125a946c 100644 --- a/jdk/src/share/sample/nio/chatserver/ClientReader.java +++ b/jdk/src/share/sample/nio/chatserver/ClientReader.java @@ -58,7 +58,7 @@ class ClientReader { } /** - * Runs a cycle of doing a beforeRead action and then inquiring a new + * Runs a cycle of doing a beforeRead action and then enqueuing a new * read on the client. Handles closed channels and errors while reading. * If the client is still connected a new round of actions are called. */ diff --git a/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java b/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java index e61273dc4d4..912a951f374 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java @@ -1173,7 +1173,7 @@ abstract class XDecoratedPeer extends XWindowPeer { } if (target == activeWindow && target != focusedWindow) { // Happens when an owned window is currently focused - focusLog.fine("Focus is on child window - transfering it back to the owner"); + focusLog.fine("Focus is on child window - transferring it back to the owner"); handleWindowFocusInSync(-1); return true; } diff --git a/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java b/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java index 725e66f8bec..d84712ba97c 100644 --- a/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java +++ b/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java @@ -266,7 +266,7 @@ final class WindowsSelectorImpl extends SelectorImpl { private void checkForException() throws IOException { if (exception == null) return; - StringBuffer message = new StringBuffer("An exception occured" + + StringBuffer message = new StringBuffer("An exception occurred" + " during the execution of select(): \n"); message.append(exception); message.append('\n'); diff --git a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java index ce0e3e7fb5d..566b0bee12c 100644 --- a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java +++ b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java @@ -336,7 +336,7 @@ public class Klist { System.out.println(" name\t name of credentials cache or " + " keytab with the prefix. File-based cache or " + "keytab's prefix is FILE:."); - System.out.println(" -c specifes that credential cache is to be " + + System.out.println(" -c specifies that credential cache is to be " + "listed"); System.out.println(" -k specifies that key tab is to be listed"); System.out.println(" options for credentials caches:"); diff --git a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java index eeeb848e6e5..bf09016136f 100644 --- a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java +++ b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java @@ -381,12 +381,12 @@ public class Ktab { } } } catch (KrbException e) { - System.err.println("Error occured while deleting the entry. "+ + System.err.println("Error occurred while deleting the entry. "+ "Deletion failed."); e.printStackTrace(); System.exit(-1); } catch (IOException e) { - System.err.println("Error occured while deleting the entry. "+ + System.err.println("Error occurred while deleting the entry. "+ " Deletion failed."); e.printStackTrace(); System.exit(-1); From f7db4eb56b4c34653120d684d0aabd96b9af18ab Mon Sep 17 00:00:00 2001 From: Dan Xu Date: Fri, 1 Nov 2013 14:40:03 -0700 Subject: [PATCH 011/145] 8027624: com/sun/crypto/provider/KeyFactory/TestProviderLeak.java unstable again Reviewed-by: wetmore --- .../crypto/provider/KeyFactory/TestProviderLeak.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/jdk/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java b/jdk/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java index 04fa96a9813..83b2c690410 100644 --- a/jdk/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java +++ b/jdk/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 6578538 + * @bug 6578538 8027624 * @summary com.sun.crypto.provider.SunJCE instance leak using KRB5 and * LoginContext * @author Brad Wetmore @@ -89,10 +89,6 @@ public class TestProviderLeak { } public static void main(String [] args) throws Exception { - // Eat up memory - Deque dummyData = eatupMemory(); - assert (dummyData != null); - // Prepare the test final SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1", "SunJCE"); @@ -107,6 +103,10 @@ public class TestProviderLeak { } }; + // Eat up memory + Deque dummyData = eatupMemory(); + assert (dummyData != null); + // Start testing iteration try { for (int i = 0; i <= 1000; i++) { From bb01d169de996d6a374930671d0293cdfb2a4567 Mon Sep 17 00:00:00 2001 From: Sergey Kuksenko Date: Sat, 2 Nov 2013 20:08:10 -0700 Subject: [PATCH 012/145] 8024635: Caching MethodType's descriptor string improves lambda linkage performance Better interpreted and compiled performance of operations in MethodType important to LambdaMetafactory. Reviewed-by: jrose, twisti, mchung --- .../classes/java/lang/invoke/MethodType.java | 51 ++++++++++++------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/jdk/src/share/classes/java/lang/invoke/MethodType.java b/jdk/src/share/classes/java/lang/invoke/MethodType.java index f8e0967c7af..781ecfc56bd 100644 --- a/jdk/src/share/classes/java/lang/invoke/MethodType.java +++ b/jdk/src/share/classes/java/lang/invoke/MethodType.java @@ -32,6 +32,7 @@ import java.lang.ref.ReferenceQueue; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentHashMap; import sun.invoke.util.BytecodeDescriptor; @@ -98,13 +99,25 @@ class MethodType implements java.io.Serializable { private @Stable MethodTypeForm form; // erased form, plus cached data about primitives private @Stable MethodType wrapAlt; // alternative wrapped/unwrapped version private @Stable Invokers invokers; // cache of handy higher-order adapters + private @Stable String methodDescriptor; // cache for toMethodDescriptorString /** * Check the given parameters for validity and store them into the final fields. */ - private MethodType(Class rtype, Class[] ptypes) { + private MethodType(Class rtype, Class[] ptypes, boolean trusted) { checkRtype(rtype); checkPtypes(ptypes); + this.rtype = rtype; + // defensively copy the array passed in by the user + this.ptypes = trusted ? ptypes : Arrays.copyOf(ptypes, ptypes.length); + } + + /** + * Construct a temporary unchecked instance of MethodType for use only as a key to the intern table. + * Does not check the given parameters for validity, and must be discarded after it is used as a searching key. + * The parameters are reversed for this constructor, so that is is not accidentally used. + */ + private MethodType(Class[] ptypes, Class rtype) { this.rtype = rtype; this.ptypes = ptypes; } @@ -146,20 +159,21 @@ class MethodType implements java.io.Serializable { /*non-public*/ static final int MAX_MH_INVOKER_ARITY = MAX_MH_ARITY-1; // deduct one more for invoker private static void checkRtype(Class rtype) { - rtype.equals(rtype); // null check + Objects.requireNonNull(rtype); } - private static int checkPtype(Class ptype) { - ptype.getClass(); //NPE + private static void checkPtype(Class ptype) { + Objects.requireNonNull(ptype); if (ptype == void.class) throw newIllegalArgumentException("parameter type cannot be void"); - if (ptype == double.class || ptype == long.class) return 1; - return 0; } /** Return number of extra slots (count of long/double args). */ private static int checkPtypes(Class[] ptypes) { int slots = 0; for (Class ptype : ptypes) { - slots += checkPtype(ptype); + checkPtype(ptype); + if (ptype == double.class || ptype == long.class) { + slots++; + } } checkSlotCount(ptypes.length + slots); return slots; @@ -284,20 +298,16 @@ class MethodType implements java.io.Serializable { */ /*trusted*/ static MethodType makeImpl(Class rtype, Class[] ptypes, boolean trusted) { + MethodType mt = internTable.get(new MethodType(ptypes, rtype)); + if (mt != null) + return mt; if (ptypes.length == 0) { ptypes = NO_PTYPES; trusted = true; } - MethodType mt1 = new MethodType(rtype, ptypes); - MethodType mt0 = internTable.get(mt1); - if (mt0 != null) - return mt0; - if (!trusted) - // defensively copy the array passed in by the user - mt1 = new MethodType(rtype, ptypes.clone()); + mt = new MethodType(rtype, ptypes, trusted); // promote the object to the Real Thing, and reprobe - MethodTypeForm form = MethodTypeForm.findForm(mt1); - mt1.form = form; - return internTable.add(mt1); + mt.form = MethodTypeForm.findForm(mt); + return internTable.add(mt); } private static final MethodType[] objectOnlyTypes = new MethodType[20]; @@ -919,7 +929,12 @@ class MethodType implements java.io.Serializable { * @return the bytecode type descriptor representation */ public String toMethodDescriptorString() { - return BytecodeDescriptor.unparse(this); + String desc = methodDescriptor; + if (desc == null) { + desc = BytecodeDescriptor.unparse(this); + methodDescriptor = desc; + } + return desc; } /*non-public*/ static String toFieldDescriptorString(Class cls) { From bd40c9b63dbc83449356a4f7f50bb6f20f27a2ff Mon Sep 17 00:00:00 2001 From: Tristan Yan Date: Mon, 4 Nov 2013 06:58:30 -0500 Subject: [PATCH 013/145] 8025198: Intermittent test failure: java/util/concurrent/ThreadPoolExecutor/ThrowingTasks.java Reviewed-by: martin, dholmes --- jdk/makefiles/CompileLaunchers.gmk | 2 +- jdk/makefiles/lib/CoreLibraries.gmk | 2 +- jdk/src/share/bin/java.c | 54 +++++++++++++++---- .../ThreadPoolExecutor/ThrowingTasks.java | 16 +++++- 4 files changed, 61 insertions(+), 13 deletions(-) diff --git a/jdk/makefiles/CompileLaunchers.gmk b/jdk/makefiles/CompileLaunchers.gmk index af5b3583758..2de3900acd0 100644 --- a/jdk/makefiles/CompileLaunchers.gmk +++ b/jdk/makefiles/CompileLaunchers.gmk @@ -154,7 +154,7 @@ define SetupLauncher $(ORIGIN_ARG) \ $$($1_LDFLAGS), \ LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_NAME,$1), \ - LDFLAGS_linux := -lpthread \ + LDFLAGS_linux := -lpthread -lrt \ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \ LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \ diff --git a/jdk/makefiles/lib/CoreLibraries.gmk b/jdk/makefiles/lib/CoreLibraries.gmk index 29c1d5fc08a..a631cf80cde 100644 --- a/jdk/makefiles/lib/CoreLibraries.gmk +++ b/jdk/makefiles/lib/CoreLibraries.gmk @@ -414,7 +414,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \ LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \ LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \ - LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \ + LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread -lrt, \ LDFLAGS_SUFFIX_macosx := $(LIBZ), \ LDFLAGS_SUFFIX_windows := \ -export:JLI_Launch \ diff --git a/jdk/src/share/bin/java.c b/jdk/src/share/bin/java.c index 73c532676b3..9d1b2bf0209 100644 --- a/jdk/src/share/bin/java.c +++ b/jdk/src/share/bin/java.c @@ -53,6 +53,8 @@ #include "java.h" +#include + /* * A NOTE TO DEVELOPERS: For performance reasons it is important that * the program image remain relatively small until after SelectVersion @@ -167,6 +169,26 @@ static jlong threadStackSize = 0; /* stack size of the new thread */ static jlong maxHeapSize = 0; /* max heap size */ static jlong initialHeapSize = 0; /* inital heap size */ +static jlong timestamps[256]; +static char* descriptors[256]; +static int ts_index = 0; + +static void stamp(char* info) { + struct timespec tp; + clock_gettime(CLOCK_MONOTONIC, &tp); + timestamps[ts_index] = ((jlong)tp.tv_sec) * (1000 * 1000 * 1000) + tp.tv_nsec; + descriptors[ts_index++] = info; +} + +static void report_times() { + printf("[0] %s\n", descriptors[0]); + int i; + for (i = 1; i < ts_index; i++) { + jlong elapsed = timestamps[i] - timestamps[i-1]; + printf("[%d] elapsed us: %.3g - Next: %s\n", i, (elapsed/1000.0), descriptors[i]); + } +} + /* * Entry point. */ @@ -184,6 +206,7 @@ JLI_Launch(int argc, char ** argv, /* main argc, argc */ jint ergo /* ergonomics class policy */ ) { + stamp("Entered JLI_Launch"); int mode = LM_UNKNOWN; char *what = NULL; char *cpath = 0; @@ -203,6 +226,7 @@ JLI_Launch(int argc, char ** argv, /* main argc, argc */ _wc_enabled = cpwildcard; _ergo_policy = ergo; +stamp("InitLauncher"); InitLauncher(javaw); DumpState(); if (JLI_IsTraceLauncher()) { @@ -231,8 +255,9 @@ JLI_Launch(int argc, char ** argv, /* main argc, argc */ * (Note: This side effect has been disabled. See comment on * bugid 5030265 below.) */ +stamp("SelectVersion"); SelectVersion(argc, argv, &main_class); - +stamp("CreateExecutionEnvironment"); CreateExecutionEnvironment(&argc, &argv, jrepath, sizeof(jrepath), jvmpath, sizeof(jvmpath), @@ -244,11 +269,11 @@ JLI_Launch(int argc, char ** argv, /* main argc, argc */ if (JLI_IsTraceLauncher()) { start = CounterGet(); } - +stamp("LoadJavaVM"); if (!LoadJavaVM(jvmpath, &ifn)) { return(6); } - +stamp("Arg processing"); if (JLI_IsTraceLauncher()) { end = CounterGet(); } @@ -295,8 +320,10 @@ JLI_Launch(int argc, char ** argv, /* main argc, argc */ /* set the -Dsun.java.launcher.* platform properties */ SetJavaLauncherPlatformProps(); - - return JVMInit(&ifn, threadStackSize, argc, argv, mode, what, ret); +stamp("JVMInit"); + int res = JVMInit(&ifn, threadStackSize, argc, argv, mode, what, ret); +stamp("initial thread DONE"); + return res; } /* * Always detach the main thread so that it appears to have ended when @@ -348,6 +375,7 @@ JLI_Launch(int argc, char ** argv, /* main argc, argc */ int JNICALL JavaMain(void * _args) { +stamp("JavaMain"); JavaMainArgs *args = (JavaMainArgs *)_args; int argc = args->argc; char **argv = args->argv; @@ -363,11 +391,12 @@ JavaMain(void * _args) jobjectArray mainArgs; int ret = 0; jlong start, end; - +stamp("RegisterThread"); RegisterThread(); /* Initialize the virtual machine */ start = CounterGet(); +stamp("InitializeJVM"); if (!InitializeJVM(&vm, &env, &ifn)) { JLI_ReportErrorMessage(JVM_ERROR1); exit(1); @@ -436,6 +465,7 @@ JavaMain(void * _args) * This method also correctly handles launching existing JavaFX * applications that may or may not have a Main-Class manifest entry. */ +stamp("LoadMainClass"); mainClass = LoadMainClass(env, mode, what); CHECK_EXCEPTION_NULL_LEAVE(mainClass); /* @@ -444,6 +474,7 @@ JavaMain(void * _args) * applications own main class but rather a helper class. To keep things * consistent in the UI we need to track and report the application main class. */ +stamp("GetApplicationClass"); appClass = GetApplicationClass(env); NULL_CHECK_RETURN_VALUE(appClass, -1); /* @@ -453,6 +484,7 @@ JavaMain(void * _args) * instead of mainClass as that may be a launcher or helper class instead * of the application class. */ +stamp("PostJVMInit"); PostJVMInit(env, appClass, vm); /* * The LoadMainClass not only loads the main class, it will also ensure @@ -460,17 +492,20 @@ JavaMain(void * _args) * is not required. The main method is invoked here so that extraneous java * stacks are not in the application stack trace. */ +stamp("Get main method"); mainID = (*env)->GetStaticMethodID(env, mainClass, "main", "([Ljava/lang/String;)V"); CHECK_EXCEPTION_NULL_LEAVE(mainID); - +stamp("CreateApplicationArgs"); /* Build platform specific argument array */ mainArgs = CreateApplicationArgs(env, argv, argc); CHECK_EXCEPTION_NULL_LEAVE(mainArgs); /* Invoke main method. */ +stamp("Invoke main method"); (*env)->CallStaticVoidMethod(env, mainClass, mainID, mainArgs); - +stamp("main complete"); +report_times(); /* * The launcher's exit code (in the absence of calls to * System.exit) will be non-zero if main threw an exception. @@ -1875,6 +1910,7 @@ ContinueInNewThread(InvocationFunctions* ifn, jlong threadStackSize, int argc, char **argv, int mode, char *what, int ret) { +stamp("ContinueInNewThread"); /* * If user doesn't specify stack size, check if VM has a preference. @@ -1900,7 +1936,7 @@ ContinueInNewThread(InvocationFunctions* ifn, jlong threadStackSize, args.mode = mode; args.what = what; args.ifn = *ifn; - +stamp("ContinueInNewThread0"); rslt = ContinueInNewThread0(JavaMain, threadStackSize, (void*)&args); /* If the caller has deemed there is an error we * simply return that, otherwise we return the value of diff --git a/jdk/test/java/util/concurrent/ThreadPoolExecutor/ThrowingTasks.java b/jdk/test/java/util/concurrent/ThreadPoolExecutor/ThrowingTasks.java index 1394a4c38ed..47c28540f24 100644 --- a/jdk/test/java/util/concurrent/ThreadPoolExecutor/ThrowingTasks.java +++ b/jdk/test/java/util/concurrent/ThreadPoolExecutor/ThrowingTasks.java @@ -33,6 +33,7 @@ import java.security.*; import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.*; +import java.util.concurrent.locks.ReentrantLock; public class ThrowingTasks { static final Random rnd = new Random(); @@ -156,6 +157,7 @@ public class ThrowingTasks { } static class CheckingExecutor extends ThreadPoolExecutor { + private final ReentrantLock lock = new ReentrantLock(); CheckingExecutor() { super(10, 10, 1L, TimeUnit.HOURS, @@ -163,10 +165,20 @@ public class ThrowingTasks { tf); } @Override protected void beforeExecute(Thread t, Runnable r) { - allStarted.countDown(); - if (allStarted.getCount() < getCorePoolSize()) + final boolean lessThanCorePoolSize; + // Add a lock to sync allStarted.countDown() and + // allStarted.getCount() < getCorePoolSize() + lock.lock(); + try { + allStarted.countDown(); + lessThanCorePoolSize = allStarted.getCount() < getCorePoolSize(); + } finally { + lock.unlock(); + } + if (lessThanCorePoolSize) { try { allContinue.await(); } catch (InterruptedException x) { unexpected(x); } + } beforeExecuteCount.getAndIncrement(); check(! isTerminated()); ((Flaky)r).beforeExecute.run(); From c43c119a472b40b5a990a7e2135b3cfb637c6ab4 Mon Sep 17 00:00:00 2001 From: David Holmes Date: Mon, 4 Nov 2013 07:39:48 -0500 Subject: [PATCH 014/145] 8027755: Anti-delta incorrect push for 8025198 Reviewed-by: alanb --- jdk/makefiles/CompileLaunchers.gmk | 2 +- jdk/makefiles/lib/CoreLibraries.gmk | 2 +- jdk/src/share/bin/java.c | 54 +++++------------------------ 3 files changed, 11 insertions(+), 47 deletions(-) diff --git a/jdk/makefiles/CompileLaunchers.gmk b/jdk/makefiles/CompileLaunchers.gmk index 2de3900acd0..af5b3583758 100644 --- a/jdk/makefiles/CompileLaunchers.gmk +++ b/jdk/makefiles/CompileLaunchers.gmk @@ -154,7 +154,7 @@ define SetupLauncher $(ORIGIN_ARG) \ $$($1_LDFLAGS), \ LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_NAME,$1), \ - LDFLAGS_linux := -lpthread -lrt \ + LDFLAGS_linux := -lpthread \ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \ LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \ diff --git a/jdk/makefiles/lib/CoreLibraries.gmk b/jdk/makefiles/lib/CoreLibraries.gmk index a631cf80cde..29c1d5fc08a 100644 --- a/jdk/makefiles/lib/CoreLibraries.gmk +++ b/jdk/makefiles/lib/CoreLibraries.gmk @@ -414,7 +414,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \ LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \ LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \ - LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread -lrt, \ + LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \ LDFLAGS_SUFFIX_macosx := $(LIBZ), \ LDFLAGS_SUFFIX_windows := \ -export:JLI_Launch \ diff --git a/jdk/src/share/bin/java.c b/jdk/src/share/bin/java.c index 9d1b2bf0209..73c532676b3 100644 --- a/jdk/src/share/bin/java.c +++ b/jdk/src/share/bin/java.c @@ -53,8 +53,6 @@ #include "java.h" -#include - /* * A NOTE TO DEVELOPERS: For performance reasons it is important that * the program image remain relatively small until after SelectVersion @@ -169,26 +167,6 @@ static jlong threadStackSize = 0; /* stack size of the new thread */ static jlong maxHeapSize = 0; /* max heap size */ static jlong initialHeapSize = 0; /* inital heap size */ -static jlong timestamps[256]; -static char* descriptors[256]; -static int ts_index = 0; - -static void stamp(char* info) { - struct timespec tp; - clock_gettime(CLOCK_MONOTONIC, &tp); - timestamps[ts_index] = ((jlong)tp.tv_sec) * (1000 * 1000 * 1000) + tp.tv_nsec; - descriptors[ts_index++] = info; -} - -static void report_times() { - printf("[0] %s\n", descriptors[0]); - int i; - for (i = 1; i < ts_index; i++) { - jlong elapsed = timestamps[i] - timestamps[i-1]; - printf("[%d] elapsed us: %.3g - Next: %s\n", i, (elapsed/1000.0), descriptors[i]); - } -} - /* * Entry point. */ @@ -206,7 +184,6 @@ JLI_Launch(int argc, char ** argv, /* main argc, argc */ jint ergo /* ergonomics class policy */ ) { - stamp("Entered JLI_Launch"); int mode = LM_UNKNOWN; char *what = NULL; char *cpath = 0; @@ -226,7 +203,6 @@ JLI_Launch(int argc, char ** argv, /* main argc, argc */ _wc_enabled = cpwildcard; _ergo_policy = ergo; -stamp("InitLauncher"); InitLauncher(javaw); DumpState(); if (JLI_IsTraceLauncher()) { @@ -255,9 +231,8 @@ stamp("InitLauncher"); * (Note: This side effect has been disabled. See comment on * bugid 5030265 below.) */ -stamp("SelectVersion"); SelectVersion(argc, argv, &main_class); -stamp("CreateExecutionEnvironment"); + CreateExecutionEnvironment(&argc, &argv, jrepath, sizeof(jrepath), jvmpath, sizeof(jvmpath), @@ -269,11 +244,11 @@ stamp("CreateExecutionEnvironment"); if (JLI_IsTraceLauncher()) { start = CounterGet(); } -stamp("LoadJavaVM"); + if (!LoadJavaVM(jvmpath, &ifn)) { return(6); } -stamp("Arg processing"); + if (JLI_IsTraceLauncher()) { end = CounterGet(); } @@ -320,10 +295,8 @@ stamp("Arg processing"); /* set the -Dsun.java.launcher.* platform properties */ SetJavaLauncherPlatformProps(); -stamp("JVMInit"); - int res = JVMInit(&ifn, threadStackSize, argc, argv, mode, what, ret); -stamp("initial thread DONE"); - return res; + + return JVMInit(&ifn, threadStackSize, argc, argv, mode, what, ret); } /* * Always detach the main thread so that it appears to have ended when @@ -375,7 +348,6 @@ stamp("initial thread DONE"); int JNICALL JavaMain(void * _args) { -stamp("JavaMain"); JavaMainArgs *args = (JavaMainArgs *)_args; int argc = args->argc; char **argv = args->argv; @@ -391,12 +363,11 @@ stamp("JavaMain"); jobjectArray mainArgs; int ret = 0; jlong start, end; -stamp("RegisterThread"); + RegisterThread(); /* Initialize the virtual machine */ start = CounterGet(); -stamp("InitializeJVM"); if (!InitializeJVM(&vm, &env, &ifn)) { JLI_ReportErrorMessage(JVM_ERROR1); exit(1); @@ -465,7 +436,6 @@ stamp("InitializeJVM"); * This method also correctly handles launching existing JavaFX * applications that may or may not have a Main-Class manifest entry. */ -stamp("LoadMainClass"); mainClass = LoadMainClass(env, mode, what); CHECK_EXCEPTION_NULL_LEAVE(mainClass); /* @@ -474,7 +444,6 @@ stamp("LoadMainClass"); * applications own main class but rather a helper class. To keep things * consistent in the UI we need to track and report the application main class. */ -stamp("GetApplicationClass"); appClass = GetApplicationClass(env); NULL_CHECK_RETURN_VALUE(appClass, -1); /* @@ -484,7 +453,6 @@ stamp("GetApplicationClass"); * instead of mainClass as that may be a launcher or helper class instead * of the application class. */ -stamp("PostJVMInit"); PostJVMInit(env, appClass, vm); /* * The LoadMainClass not only loads the main class, it will also ensure @@ -492,20 +460,17 @@ stamp("PostJVMInit"); * is not required. The main method is invoked here so that extraneous java * stacks are not in the application stack trace. */ -stamp("Get main method"); mainID = (*env)->GetStaticMethodID(env, mainClass, "main", "([Ljava/lang/String;)V"); CHECK_EXCEPTION_NULL_LEAVE(mainID); -stamp("CreateApplicationArgs"); + /* Build platform specific argument array */ mainArgs = CreateApplicationArgs(env, argv, argc); CHECK_EXCEPTION_NULL_LEAVE(mainArgs); /* Invoke main method. */ -stamp("Invoke main method"); (*env)->CallStaticVoidMethod(env, mainClass, mainID, mainArgs); -stamp("main complete"); -report_times(); + /* * The launcher's exit code (in the absence of calls to * System.exit) will be non-zero if main threw an exception. @@ -1910,7 +1875,6 @@ ContinueInNewThread(InvocationFunctions* ifn, jlong threadStackSize, int argc, char **argv, int mode, char *what, int ret) { -stamp("ContinueInNewThread"); /* * If user doesn't specify stack size, check if VM has a preference. @@ -1936,7 +1900,7 @@ stamp("ContinueInNewThread"); args.mode = mode; args.what = what; args.ifn = *ifn; -stamp("ContinueInNewThread0"); + rslt = ContinueInNewThread0(JavaMain, threadStackSize, (void*)&args); /* If the caller has deemed there is an error we * simply return that, otherwise we return the value of From d3e3eead180ffb56fc98c90cc5dc327536a5ae4c Mon Sep 17 00:00:00 2001 From: Athijegannathan Sundararajan Date: Mon, 4 Nov 2013 18:52:22 +0530 Subject: [PATCH 015/145] 8027753: Support ScriptObject to JSObject, ScriptObjectMirror, Map, Bindings auto-conversion as well as explicit wrap, unwrap Reviewed-by: jlaskey, hannesw, attila --- .../api/scripting/ScriptObjectMirror.java | 10 ++-- .../nashorn/api/scripting/ScriptUtils.java | 57 +++++++++++++++++++ .../runtime/linker/NashornLinker.java | 39 +++++++++++-- nashorn/test/script/basic/JDK-8027753.js | 50 ++++++++++++++++ .../test/script/basic/JDK-8027753.js.EXPECTED | 3 + .../api/scripting/ScriptEngineTest.java | 12 ++++ .../src/jdk/nashorn/api/scripting/Window.java | 19 +++++++ 7 files changed, 180 insertions(+), 10 deletions(-) create mode 100644 nashorn/test/script/basic/JDK-8027753.js create mode 100644 nashorn/test/script/basic/JDK-8027753.js.EXPECTED diff --git a/nashorn/src/jdk/nashorn/api/scripting/ScriptObjectMirror.java b/nashorn/src/jdk/nashorn/api/scripting/ScriptObjectMirror.java index 6b88668921b..764c8da30fb 100644 --- a/nashorn/src/jdk/nashorn/api/scripting/ScriptObjectMirror.java +++ b/nashorn/src/jdk/nashorn/api/scripting/ScriptObjectMirror.java @@ -601,9 +601,9 @@ public final class ScriptObjectMirror extends AbstractJSObject implements Bindin * @param homeGlobal global to which this object belongs. Not used for ConsStrings. * @return wrapped/converted object */ - public static Object wrap(final Object obj, final ScriptObject homeGlobal) { + public static Object wrap(final Object obj, final Object homeGlobal) { if(obj instanceof ScriptObject) { - return homeGlobal != null ? new ScriptObjectMirror((ScriptObject)obj, homeGlobal) : obj; + return homeGlobal instanceof ScriptObject ? new ScriptObjectMirror((ScriptObject)obj, (ScriptObject)homeGlobal) : obj; } if(obj instanceof ConsString) { return obj.toString(); @@ -618,7 +618,7 @@ public final class ScriptObjectMirror extends AbstractJSObject implements Bindin * @param homeGlobal global to which this object belongs * @return unwrapped object */ - public static Object unwrap(final Object obj, final ScriptObject homeGlobal) { + public static Object unwrap(final Object obj, final Object homeGlobal) { if (obj instanceof ScriptObjectMirror) { final ScriptObjectMirror mirror = (ScriptObjectMirror)obj; return (mirror.global == homeGlobal)? mirror.sobj : obj; @@ -634,7 +634,7 @@ public final class ScriptObjectMirror extends AbstractJSObject implements Bindin * @param homeGlobal global to which this object belongs * @return wrapped array */ - public static Object[] wrapArray(final Object[] args, final ScriptObject homeGlobal) { + public static Object[] wrapArray(final Object[] args, final Object homeGlobal) { if (args == null || args.length == 0) { return args; } @@ -655,7 +655,7 @@ public final class ScriptObjectMirror extends AbstractJSObject implements Bindin * @param homeGlobal global to which this object belongs * @return unwrapped array */ - public static Object[] unwrapArray(final Object[] args, final ScriptObject homeGlobal) { + public static Object[] unwrapArray(final Object[] args, final Object homeGlobal) { if (args == null || args.length == 0) { return args; } diff --git a/nashorn/src/jdk/nashorn/api/scripting/ScriptUtils.java b/nashorn/src/jdk/nashorn/api/scripting/ScriptUtils.java index 48045e1f336..fd0a7beefbb 100644 --- a/nashorn/src/jdk/nashorn/api/scripting/ScriptUtils.java +++ b/nashorn/src/jdk/nashorn/api/scripting/ScriptUtils.java @@ -25,7 +25,9 @@ package jdk.nashorn.api.scripting; +import jdk.nashorn.internal.runtime.Context; import jdk.nashorn.internal.runtime.ScriptFunction; +import jdk.nashorn.internal.runtime.ScriptObject; import jdk.nashorn.internal.runtime.ScriptRuntime; /** @@ -71,4 +73,59 @@ public final class ScriptUtils { return func.makeSynchronizedFunction(sync); } + /** + * Make a script object mirror on given object if needed. + * + * @param obj object to be wrapped + * @return wrapped object + */ + public static Object wrap(final Object obj) { + if (obj instanceof ScriptObject) { + return ScriptObjectMirror.wrap(obj, Context.getGlobal()); + } + + return obj; + } + + /** + * Unwrap a script object mirror if needed. + * + * @param obj object to be unwrapped + * @return unwrapped object + */ + public static Object unwrap(final Object obj) { + if (obj instanceof ScriptObjectMirror) { + return ScriptObjectMirror.unwrap(obj, Context.getGlobal()); + } + + return obj; + } + + /** + * Wrap an array of object to script object mirrors if needed. + * + * @param args array to be unwrapped + * @return wrapped array + */ + public static Object[] wrapArray(final Object[] args) { + if (args == null || args.length == 0) { + return args; + } + + return ScriptObjectMirror.wrapArray(args, Context.getGlobal()); + } + + /** + * Unwrap an array of script object mirrors if needed. + * + * @param args array to be unwrapped + * @return unwrapped array + */ + public static Object[] unwrapArray(final Object[] args) { + if (args == null || args.length == 0) { + return args; + } + + return ScriptObjectMirror.unwrapArray(args, Context.getGlobal()); + } } diff --git a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornLinker.java b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornLinker.java index a760c604d46..27e4573f572 100644 --- a/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornLinker.java +++ b/nashorn/src/jdk/nashorn/internal/runtime/linker/NashornLinker.java @@ -32,6 +32,8 @@ import java.lang.invoke.MethodHandles; import java.lang.reflect.Modifier; import java.util.Deque; import java.util.List; +import java.util.Map; +import javax.script.Bindings; import jdk.internal.dynalink.CallSiteDescriptor; import jdk.internal.dynalink.linker.ConversionComparator; import jdk.internal.dynalink.linker.GuardedInvocation; @@ -40,7 +42,11 @@ import jdk.internal.dynalink.linker.LinkRequest; import jdk.internal.dynalink.linker.LinkerServices; import jdk.internal.dynalink.linker.TypeBasedGuardingDynamicLinker; import jdk.internal.dynalink.support.Guards; +import jdk.nashorn.api.scripting.JSObject; +import jdk.nashorn.api.scripting.ScriptObjectMirror; +import jdk.nashorn.api.scripting.ScriptUtils; import jdk.nashorn.internal.objects.NativeArray; +import jdk.nashorn.internal.runtime.Context; import jdk.nashorn.internal.runtime.JSType; import jdk.nashorn.internal.runtime.ScriptFunction; import jdk.nashorn.internal.runtime.ScriptObject; @@ -115,9 +121,14 @@ final class NashornLinker implements TypeBasedGuardingDynamicLinker, GuardingTyp return new GuardedInvocation(mh, canLinkTypeStatic(sourceType) ? null : IS_NASHORN_OR_UNDEFINED_TYPE); } - GuardedInvocation inv = getArrayConverter(sourceType, targetType); - if(inv != null) { - return inv; + final GuardedInvocation arrayConverter = getArrayConverter(sourceType, targetType); + if(arrayConverter != null) { + return arrayConverter; + } + + final GuardedInvocation mirrorConverter = getMirrorConverter(sourceType, targetType); + if(mirrorConverter != null) { + return mirrorConverter; } return getSamTypeConverter(sourceType, targetType); @@ -181,6 +192,18 @@ final class NashornLinker implements TypeBasedGuardingDynamicLinker, GuardingTyp return MH.asType(converter, converter.type().changeReturnType(type)); } + private static GuardedInvocation getMirrorConverter(Class sourceType, Class targetType) { + // Could've also used (targetType.isAssignableFrom(ScriptObjectMirror.class) && targetType != Object.class) but + // it's probably better to explicitly spell out the supported target types + if (targetType == Map.class || targetType == Bindings.class || targetType == JSObject.class || targetType == ScriptObjectMirror.class) { + if(ScriptObject.class.isAssignableFrom(sourceType)) { + return new GuardedInvocation(CREATE_MIRROR, null); + } + return new GuardedInvocation(CREATE_MIRROR, IS_SCRIPT_OBJECT); + } + return null; + } + private static boolean isAutoConvertibleFromFunction(final Class clazz) { return isAbstractClass(clazz) && !ScriptObject.class.isAssignableFrom(clazz) && JavaAdapterFactory.isAutoConvertibleFromFunction(clazz); @@ -235,17 +258,23 @@ final class NashornLinker implements TypeBasedGuardingDynamicLinker, GuardingTyp return clazz == List.class || clazz == Deque.class; } + private static final MethodHandle IS_SCRIPT_OBJECT = Guards.isInstance(ScriptObject.class, MH.type(Boolean.TYPE, Object.class)); private static final MethodHandle IS_SCRIPT_FUNCTION = Guards.isInstance(ScriptFunction.class, MH.type(Boolean.TYPE, Object.class)); private static final MethodHandle IS_NATIVE_ARRAY = Guards.isOfClass(NativeArray.class, MH.type(Boolean.TYPE, Object.class)); - private static final MethodHandle IS_NASHORN_OR_UNDEFINED_TYPE = findOwnMH("isNashornTypeOrUndefined", - Boolean.TYPE, Object.class); + private static final MethodHandle IS_NASHORN_OR_UNDEFINED_TYPE = findOwnMH("isNashornTypeOrUndefined", Boolean.TYPE, Object.class); + private static final MethodHandle CREATE_MIRROR = findOwnMH("createMirror", Object.class, Object.class); @SuppressWarnings("unused") private static boolean isNashornTypeOrUndefined(final Object obj) { return obj instanceof ScriptObject || obj instanceof Undefined; } + @SuppressWarnings("unused") + private static Object createMirror(final Object obj) { + return ScriptUtils.wrap(obj); + } + private static MethodHandle findOwnMH(final String name, final Class rtype, final Class... types) { return MH.findStatic(MethodHandles.lookup(), NashornLinker.class, name, MH.type(rtype, types)); } diff --git a/nashorn/test/script/basic/JDK-8027753.js b/nashorn/test/script/basic/JDK-8027753.js new file mode 100644 index 00000000000..2af0baad4cd --- /dev/null +++ b/nashorn/test/script/basic/JDK-8027753.js @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * JDK-8027753: Support ScriptObject to JSObject, ScriptObjectMirror, Map, Bindings auto-conversion as well as explicit wrap, unwrap + * + * @test + * @run + */ + +var ScriptUtils = Java.type("jdk.nashorn.api.scripting.ScriptUtils"); +var ScriptObjectMirror = Java.type("jdk.nashorn.api.scripting.ScriptObjectMirror"); + +var obj = { foo: 34, bar: 'hello' }; + +var wrapped = ScriptUtils.wrap(obj); +if (! (wrapped instanceof ScriptObjectMirror)) { + fail("ScriptUtils.wrap does not return a ScriptObjectMirror"); +} + +print("wrapped.foo = " + wrapped.foo); +print("wrapped.bar = " + wrapped.bar); + +var unwrapped = ScriptUtils.unwrap(wrapped); +if (! (unwrapped instanceof Object)) { + fail("ScriptUtils.unwrap does not return a ScriptObject"); +} + +// same object unwrapped? +print(unwrapped === obj); diff --git a/nashorn/test/script/basic/JDK-8027753.js.EXPECTED b/nashorn/test/script/basic/JDK-8027753.js.EXPECTED new file mode 100644 index 00000000000..30a8779e98c --- /dev/null +++ b/nashorn/test/script/basic/JDK-8027753.js.EXPECTED @@ -0,0 +1,3 @@ +wrapped.foo = 34 +wrapped.bar = hello +true diff --git a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java index 99207de0d6e..55aacb3409f 100644 --- a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java +++ b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java @@ -523,6 +523,18 @@ public class ScriptEngineTest { assertEquals(sw.toString(), println("34 true hello")); } + @Test + public void scriptObjectAutoConversionTest() throws ScriptException { + final ScriptEngineManager m = new ScriptEngineManager(); + final ScriptEngine e = m.getEngineByName("nashorn"); + e.eval("obj = { foo: 'hello' }"); + e.put("Window", e.eval("Packages.jdk.nashorn.api.scripting.Window")); + assertEquals(e.eval("Window.funcJSObject(obj)"), "hello"); + assertEquals(e.eval("Window.funcScriptObjectMirror(obj)"), "hello"); + assertEquals(e.eval("Window.funcMap(obj)"), "hello"); + assertEquals(e.eval("Window.funcJSObject(obj)"), "hello"); + } + private static final String LINE_SEPARATOR = System.getProperty("line.separator"); // Returns String that would be the result of calling PrintWriter.println diff --git a/nashorn/test/src/jdk/nashorn/api/scripting/Window.java b/nashorn/test/src/jdk/nashorn/api/scripting/Window.java index bde2394119f..510c5daec75 100644 --- a/nashorn/test/src/jdk/nashorn/api/scripting/Window.java +++ b/nashorn/test/src/jdk/nashorn/api/scripting/Window.java @@ -25,6 +25,9 @@ package jdk.nashorn.api.scripting; +import java.util.Map; +import javax.script.Bindings; + public class Window { private String location = "http://localhost:8080/window"; @@ -63,4 +66,20 @@ public class Window { System.out.println("window.setTimeout: " + delay + ", code: " + code); return 0; } + + public static Object funcJSObject(final JSObject jsobj) { + return jsobj.getMember("foo"); + } + + public static Object funcScriptObjectMirror(final ScriptObjectMirror sobj) { + return sobj.get("foo"); + } + + public static Object funcMap(final Map map) { + return map.get("foo"); + } + + public static Object funcBindings(final Bindings bindings) { + return bindings.get("foo"); + } } From 8c97f82aae76084c8c6f1d57ef56605907caa296 Mon Sep 17 00:00:00 2001 From: Brian Burkhalter Date: Mon, 4 Nov 2013 08:05:02 -0800 Subject: [PATCH 016/145] 8027625: test/java/math/BigInteger/ExtremeShiftingTests.java needs @run tag to specify heap size Add @run tag to specify heap size Reviewed-by: alanb, dxu --- jdk/test/java/math/BigInteger/ExtremeShiftingTests.java | 1 + 1 file changed, 1 insertion(+) diff --git a/jdk/test/java/math/BigInteger/ExtremeShiftingTests.java b/jdk/test/java/math/BigInteger/ExtremeShiftingTests.java index 4c39a6097fd..5ddc07e887c 100644 --- a/jdk/test/java/math/BigInteger/ExtremeShiftingTests.java +++ b/jdk/test/java/math/BigInteger/ExtremeShiftingTests.java @@ -25,6 +25,7 @@ * @test * @bug 6371401 * @summary Tests of shiftLeft and shiftRight on Integer.MIN_VALUE + * @run main/othervm -Xmx512m ExtremeShiftingTests * @author Joseph D. Darcy */ import java.math.BigInteger; From 2d8325d24451e286631d2d2fbcd2696756ebc924 Mon Sep 17 00:00:00 2001 From: Michael McMahon Date: Mon, 4 Nov 2013 17:47:59 +0000 Subject: [PATCH 017/145] 8027687: The constructors of URLPermission class do not behave as described in javad Reviewed-by: chegar, mduigou --- .../share/classes/java/net/HostPortrange.java | 36 +++++++++++++++++-- .../share/classes/java/net/URLPermission.java | 5 ++- .../net/URLPermission/URLPermissionTest.java | 13 ++++++- 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/jdk/src/share/classes/java/net/HostPortrange.java b/jdk/src/share/classes/java/net/HostPortrange.java index fc5e3d98a20..3c924d8bfc0 100644 --- a/jdk/src/share/classes/java/net/HostPortrange.java +++ b/jdk/src/share/classes/java/net/HostPortrange.java @@ -114,7 +114,7 @@ class HostPortrange { if (hoststr.equals("*")) { hoststr = ""; } else if (hoststr.startsWith("*.")) { - hoststr = hoststr.substring(1).toLowerCase(); // leave the '.' ? + hoststr = toLowerCase(hoststr.substring(1)); } else { throw new IllegalArgumentException("invalid host wildcard specification"); } @@ -147,7 +147,7 @@ class HostPortrange { hoststr = sb.toString(); } else { // regular domain name - hoststr = hoststr.toLowerCase(); + hoststr = toLowerCase(hoststr); } } } @@ -161,6 +161,38 @@ class HostPortrange { } } + static final int CASE_DIFF = 'A' - 'a'; + + /** + * Convert to lower case, and check that all chars are ascii + * alphanumeric, '-' or '.' only. + */ + static String toLowerCase(String s) { + int len = s.length(); + StringBuilder sb = null; + + for (int i=0; i= 'a' && c <= 'z') || (c == '.')) { + if (sb != null) + sb.append(c); + } else if ((c >= '0' && c <= '9') || (c == '-')) { + if (sb != null) + sb.append(c); + } else if (c >= 'A' && c <= 'Z') { + if (sb == null) { + sb = new StringBuilder(len); + sb.append(s, 0, i); + } + sb.append((char)(c - CASE_DIFF)); + } else { + throw new IllegalArgumentException("Invalid characters in hostname"); + } + } + return sb == null ? s : sb.toString(); + } + + public boolean literal() { return literal; } diff --git a/jdk/src/share/classes/java/net/URLPermission.java b/jdk/src/share/classes/java/net/URLPermission.java index 7ad56a1c20f..13472a9e5ab 100644 --- a/jdk/src/share/classes/java/net/URLPermission.java +++ b/jdk/src/share/classes/java/net/URLPermission.java @@ -426,7 +426,10 @@ public final class URLPermission extends Permission { this.ssp = url.substring(delim + 1); if (!ssp.startsWith("//")) { - this.authority = new Authority(scheme, ssp.toLowerCase()); + if (!ssp.equals("*")) { + throw new IllegalArgumentException("invalid URL string"); + } + this.authority = new Authority(scheme, "*"); return; } String authpath = ssp.substring(2); diff --git a/jdk/test/java/net/URLPermission/URLPermissionTest.java b/jdk/test/java/net/URLPermission/URLPermissionTest.java index 3bf862b6dc9..948e9dabb13 100644 --- a/jdk/test/java/net/URLPermission/URLPermissionTest.java +++ b/jdk/test/java/net/URLPermission/URLPermissionTest.java @@ -186,6 +186,14 @@ public class URLPermissionTest { imtest("http:*", "https://www.foo.com/a/b/c", false), imtest("http:*", "http://www.foo.com/a/b/c", true), imtest("http:*", "http://foo/bar", true), + imtest("http://WWW.foO.cOM/a/b/*", "http://wwW.foo.com/a/b/c", true), + imtest("http://wWw.fOo.cOm/a/b/*", "http://Www.foo.com/a/b/*", true), + imtest("http://www.FOO.com/", "http://www.foo.COM/", true), + imtest("http://66ww-w.F-O012O.com/", "http://66ww-w.f-o012o.COM/",true), + imtest("http://xn--ire-9la.com/", "http://xn--ire-9la.COM/", true), + imtest("http://x/", "http://X/", true), + imtest("http://x/", "http://x/", true), + imtest("http://X/", "http://X/", true), imtest("http://foo/bar", "https://foo/bar", false) }; @@ -194,9 +202,12 @@ public class URLPermissionTest { static Test[] exceptionTests = { extest("http://1.2.3.4.5/a/b/c"), extest("http://www.*.com"), - //extest("http://www.foo.com:1-X"), extest("http://[foo.com]:99"), extest("http://[fec0::X]:99"), + extest("http:\\www.foo.com"), + extest("http://w_09ww.foo.com"), + extest("http://w&09ww.foo.com/p"), + extest("http://www+foo.com"), extest("http:") }; From ee1006e3bd0f49054996f387b8ec20361716fa2d Mon Sep 17 00:00:00 2001 From: Robert Field Date: Mon, 4 Nov 2013 10:12:18 -0800 Subject: [PATCH 018/145] 7194897: JSR 292: Cannot create more than 16 instances of an anonymous class 8027681: Lambda serialization fails once reflection proxy generation kicks in Co-authored-by: Joel Borggren-Franck Co-authored-by: Brian Goetz Reviewed-by: ksrini, briangoetz, jfranck --- .../NativeConstructorAccessorImpl.java | 9 ++- .../sun/reflect/NativeMethodAccessorImpl.java | 9 ++- .../classes/sun/reflect/misc/ReflectUtil.java | 11 +++- .../lambda/RepetitiveLambdaSerialization.java | 53 ++++++++++++++++ .../lang/invoke/SerializedLambdaTest.java | 12 ++-- .../ManyNewInstanceAnonTest.java | 62 +++++++++++++++++++ 6 files changed, 147 insertions(+), 9 deletions(-) create mode 100644 jdk/test/java/lang/invoke/lambda/RepetitiveLambdaSerialization.java create mode 100644 jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java diff --git a/jdk/src/share/classes/sun/reflect/NativeConstructorAccessorImpl.java b/jdk/src/share/classes/sun/reflect/NativeConstructorAccessorImpl.java index 4f91ddc4460..d56c3caab08 100644 --- a/jdk/src/share/classes/sun/reflect/NativeConstructorAccessorImpl.java +++ b/jdk/src/share/classes/sun/reflect/NativeConstructorAccessorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ package sun.reflect; import java.lang.reflect.*; +import sun.reflect.misc.ReflectUtil; /** Used only for the first few invocations of a Constructor; afterward, switches to bytecode-based implementation */ @@ -44,7 +45,11 @@ class NativeConstructorAccessorImpl extends ConstructorAccessorImpl { IllegalArgumentException, InvocationTargetException { - if (++numInvocations > ReflectionFactory.inflationThreshold()) { + // We can't inflate a constructor belonging to a vm-anonymous class + // because that kind of class can't be referred to by name, hence can't + // be found from the generated bytecode. + if (++numInvocations > ReflectionFactory.inflationThreshold() + && !ReflectUtil.isVMAnonymousClass(c.getDeclaringClass())) { ConstructorAccessorImpl acc = (ConstructorAccessorImpl) new MethodAccessorGenerator(). generateConstructor(c.getDeclaringClass(), diff --git a/jdk/src/share/classes/sun/reflect/NativeMethodAccessorImpl.java b/jdk/src/share/classes/sun/reflect/NativeMethodAccessorImpl.java index 93f186b7b49..b1d39e7c965 100644 --- a/jdk/src/share/classes/sun/reflect/NativeMethodAccessorImpl.java +++ b/jdk/src/share/classes/sun/reflect/NativeMethodAccessorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ package sun.reflect; import java.lang.reflect.*; +import sun.reflect.misc.ReflectUtil; /** Used only for the first few invocations of a Method; afterward, switches to bytecode-based implementation */ @@ -42,7 +43,11 @@ class NativeMethodAccessorImpl extends MethodAccessorImpl { public Object invoke(Object obj, Object[] args) throws IllegalArgumentException, InvocationTargetException { - if (++numInvocations > ReflectionFactory.inflationThreshold()) { + // We can't inflate methods belonging to vm-anonymous classes because + // that kind of class can't be referred to by name, hence can't be + // found from the generated bytecode. + if (++numInvocations > ReflectionFactory.inflationThreshold() + && !ReflectUtil.isVMAnonymousClass(method.getDeclaringClass())) { MethodAccessorImpl acc = (MethodAccessorImpl) new MethodAccessorGenerator(). generateMethod(method.getDeclaringClass(), diff --git a/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java b/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java index 1f871e8de02..4316d422c39 100644 --- a/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java +++ b/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -298,4 +298,13 @@ public final class ReflectUtil { } return false; } + + /** + * Checks if {@code Class cls} is a VM-anonymous class + * as defined by {@link sun.misc.Unsafe#defineAnonymousClass} + * (not to be confused with a Java Language anonymous inner class). + */ + public static boolean isVMAnonymousClass(Class cls) { + return cls.getSimpleName().contains("/"); + } } diff --git a/jdk/test/java/lang/invoke/lambda/RepetitiveLambdaSerialization.java b/jdk/test/java/lang/invoke/lambda/RepetitiveLambdaSerialization.java new file mode 100644 index 00000000000..5c57615a307 --- /dev/null +++ b/jdk/test/java/lang/invoke/lambda/RepetitiveLambdaSerialization.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8027681 + * @summary Lambda serialization fails once reflection proxy generation kicks in + * @author Robert Field + * @run main/othervm RepetitiveLambdaSerialization + */ + +import java.io.*; + +public class RepetitiveLambdaSerialization { + + static final int REPS = 20; + + public static void main(String[] args) throws Exception { + LSI ls = z -> "[" + z + "]"; + for (int i = 0; i < REPS; ++i) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutput out = new ObjectOutputStream(baos); + out.writeObject(ls); + out.flush(); + out.close(); + } + System.out.println("Passed."); + } +} + +interface LSI extends Serializable { + String convert(String x); +} diff --git a/jdk/test/java/util/stream/test/org/openjdk/tests/java/lang/invoke/SerializedLambdaTest.java b/jdk/test/java/util/stream/test/org/openjdk/tests/java/lang/invoke/SerializedLambdaTest.java index 8f01dada86f..fdbd689ad36 100644 --- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/lang/invoke/SerializedLambdaTest.java +++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/lang/invoke/SerializedLambdaTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -56,14 +56,18 @@ import static org.testng.Assert.fail; */ @Test public class SerializedLambdaTest { + public static final int REPS = 50; + @SuppressWarnings("unchecked") private void assertSerial(T p, Consumer asserter) throws IOException, ClassNotFoundException { asserter.accept(p); - byte[] bytes = serialize(p); - assertTrue(bytes.length > 0); + for (int i=0; i 0); - asserter.accept((T) deserialize(bytes)); + asserter.accept((T) deserialize(bytes)); + } } private void assertNotSerial(Predicate p, Consumer> asserter) diff --git a/jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java b/jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java new file mode 100644 index 00000000000..b931b8a65f8 --- /dev/null +++ b/jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7194897 + * @summary JSR 292: Cannot create more than 16 instances of an anonymous class + * @author Robert Field + * @library /lib/testlibrary + * @compile -XDignore.symbol.file ManyNewInstanceAnonTest.java + * @run main ClassFileInstaller ManyNewInstanceAnonTest + * @run main/othervm -Xbootclasspath/a:. -Xverify:all ManyNewInstanceAnonTest + */ +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import sun.misc.Unsafe; + +public class ManyNewInstanceAnonTest { + + static final int REPS = 20; + static final Class klass = ManyNewInstanceAnonTest.class; + + public static void main(String[] args) throws Exception { + Class c = Unsafe.getUnsafe().defineAnonymousClass(klass, readClassFile(), null); + for (int i = 0; i < REPS; ++i) { + System.out.printf("%d: %s\n", i, c.newInstance()); + } + System.out.println("Passed."); + } + + private static byte[] readClassFile() throws Exception { + try (InputStream in = klass.getResourceAsStream(klass.getSimpleName() + ".class"); + ByteArrayOutputStream out = new ByteArrayOutputStream()) + { + int b; + while ((b = in.read()) != -1) { + out.write(b); + } + return out.toByteArray(); + } + } +} From 79b1f94594b1743ed2f45251b63123c4ae60f1ba Mon Sep 17 00:00:00 2001 From: Andreas Lundblad Date: Mon, 4 Nov 2013 15:21:47 +0100 Subject: [PATCH 019/145] 8016725: TEST_BUG: java/lang/reflect/Method/DefaultMethodModeling.java failing intermittently Moved DefaultMethodModeling.java to its own directory to avoid conflicts with Equals.java. Reviewed-by: darcy --- .../Method/{ => defaultMethodModeling}/DefaultMethodModeling.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jdk/test/java/lang/reflect/Method/{ => defaultMethodModeling}/DefaultMethodModeling.java (100%) diff --git a/jdk/test/java/lang/reflect/Method/DefaultMethodModeling.java b/jdk/test/java/lang/reflect/Method/defaultMethodModeling/DefaultMethodModeling.java similarity index 100% rename from jdk/test/java/lang/reflect/Method/DefaultMethodModeling.java rename to jdk/test/java/lang/reflect/Method/defaultMethodModeling/DefaultMethodModeling.java From 3fdca184336549a0dcc7a20a96348bcbd61a72aa Mon Sep 17 00:00:00 2001 From: Dan Xu Date: Mon, 4 Nov 2013 15:48:08 -0800 Subject: [PATCH 020/145] 8027612: java/io/File/MaxPathLength.java fails intermittently in the clean-up stage Reviewed-by: chegar --- jdk/test/java/io/File/MaxPathLength.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/jdk/test/java/io/File/MaxPathLength.java b/jdk/test/java/io/File/MaxPathLength.java index 9fd6183f36d..cdda0471446 100644 --- a/jdk/test/java/io/File/MaxPathLength.java +++ b/jdk/test/java/io/File/MaxPathLength.java @@ -28,6 +28,8 @@ import java.io.*; import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.DirectoryNotEmptyException; public class MaxPathLength { private static String sep = File.separator; @@ -182,7 +184,18 @@ public class MaxPathLength { } finally { // Clean up for (int i = 0; i < max; i++) { - Files.deleteIfExists((new File(created[i])).toPath()); + Path p = (new File(created[i])).toPath(); + try { + Files.deleteIfExists(p); + // Test if the file is really deleted and wait for 1 second at most + for (int j = 0; j < 10 && Files.exists(p); j++) { + Thread.sleep(100); + } + } catch (DirectoryNotEmptyException ex) { + // Give up the clean-up, let jtreg handle it. + System.err.println("Dir, " + p + ", is not empty"); + break; + } } } } From f78f47b98dff55aecec8020c194025b612aa1a8b Mon Sep 17 00:00:00 2001 From: Konstantin Shefov Date: Tue, 5 Nov 2013 13:09:40 +0400 Subject: [PATCH 021/145] 8027708: NASHORN TEST: Create Nashorn test that draws image step-by-step using JavaFX canvas Reviewed-by: jlaskey, lagergren --- nashorn/make/build.xml | 7 + nashorn/make/project.properties | 2 +- nashorn/test/script/jfx.js | 37 ++- nashorn/test/script/jfx/flyingimage.js | 33 +-- .../script/jfx/flyingimage/flyingimage.png | Bin 439 -> 1278 bytes .../script/jfx/flyingimage/golden/linux.png | Bin 14754 -> 68179 bytes .../script/jfx/flyingimage/golden/macosx.png | Bin 12298 -> 68361 bytes .../script/jfx/flyingimage/golden/windows.png | Bin 9849 -> 68588 bytes nashorn/test/script/jfx/kaleidoscope.js | 59 ++--- .../script/jfx/kaleidoscope/golden/linux.png | Bin 185802 -> 192428 bytes .../script/jfx/kaleidoscope/golden/macosx.png | Bin 202995 -> 202987 bytes .../jfx/kaleidoscope/golden/windows.png | Bin 202946 -> 192428 bytes nashorn/test/script/jfx/spread.js | 222 ++++++++++++++++++ .../test/script/jfx/spread/golden/linux.png | Bin 0 -> 201159 bytes .../test/script/jfx/spread/golden/macosx.png | Bin 0 -> 199251 bytes .../test/script/jfx/spread/golden/windows.png | Bin 0 -> 201159 bytes 16 files changed, 303 insertions(+), 57 deletions(-) create mode 100644 nashorn/test/script/jfx/spread.js create mode 100644 nashorn/test/script/jfx/spread/golden/linux.png create mode 100644 nashorn/test/script/jfx/spread/golden/macosx.png create mode 100644 nashorn/test/script/jfx/spread/golden/windows.png diff --git a/nashorn/make/build.xml b/nashorn/make/build.xml index c90cdd6fe71..7d1f42aea0c 100644 --- a/nashorn/make/build.xml +++ b/nashorn/make/build.xml @@ -372,6 +372,12 @@ grant codeBase "file:/${basedir}/test/script/basic/classloader.js" { + + + + + + @@ -380,6 +386,7 @@ grant codeBase "file:/${basedir}/test/script/basic/classloader.js" { + diff --git a/nashorn/make/project.properties b/nashorn/make/project.properties index 33c94780249..c3ffca4ec68 100644 --- a/nashorn/make/project.properties +++ b/nashorn/make/project.properties @@ -230,7 +230,7 @@ testjfx.run.test.classpath=\ ${file.reference.jemmyawtinput.jar}${path.separator}\ ${file.reference.testng.jar}${path.separator}\ ${nashorn.internal.tests.jar}${path.separator}\ - ${nashorn.api.tests.jar} + ${nashorn.api.tests.jar} # testjfx VM options for script tests with @fork option testjfx-test-sys-prop.test.fork.jvm.options=${run.test.jvmargs.main} -Xmx${run.test.xmx} -cp ${testjfx.run.test.classpath} diff --git a/nashorn/test/script/jfx.js b/nashorn/test/script/jfx.js index 26f97873456..5962b5d05ba 100644 --- a/nashorn/test/script/jfx.js +++ b/nashorn/test/script/jfx.js @@ -37,13 +37,24 @@ var ByWindowType = Java.type("org.jemmy.fx.ByWindowType"); var Scene = Java.type("javafx.scene.Scene"); var Stage = Java.type("javafx.stage.Stage"); var File = Java.type("java.io.File"); -var Timer = Java.type("java.util.Timer"); -var TimerTask = Java.type("java.util.TimerTask"); var OSInfo = Java.type("sun.awt.OSInfo"); var OSType = Java.type("sun.awt.OSInfo.OSType"); var StringBuffer = Java.type("java.lang.StringBuffer"); +var Paint = Java.type("javafx.scene.paint.Paint"); +var Color = Java.type("javafx.scene.paint.Color"); +var Image = Java.type("javafx.scene.image.Image"); +var Canvas = Java.type("javafx.scene.canvas.Canvas"); +var BorderPane = Java.type("javafx.scene.layout.BorderPane"); +var StackPane = Java.type("javafx.scene.layout.StackPane"); +var StrokeLineCap = Java.type("javafx.scene.shape.StrokeLineCap"); +var Platform = Java.type("javafx.application.Platform"); +var Runnable = Java.type("java.lang.Runnable"); +var RunnableExtend = Java.extend(Runnable); +var AnimationTimer = Java.type("javafx.animation.AnimationTimer"); +var AnimationTimerExtend = Java.extend(AnimationTimer); +var Timer = Java.type("java.util.Timer"); +var TimerTask = Java.type("java.util.TimerTask"); -var WAIT = 2000; var TESTNAME = "test"; var fsep = System.getProperty("file.separator"); @@ -53,14 +64,16 @@ function checkImageAndExit() { run: function run() { var tmpdir = System.getProperty("java.io.tmpdir"); var timenow = (new Date()).getTime(); - makeScreenShot(tmpdir + fsep + "screenshot" + timenow +".png"); - var dupImg = isDuplicateImages(tmpdir + fsep + "screenshot" + timenow +".png", __DIR__ + "jfx" + fsep + TESTNAME + fsep + "golden"); - (new File(mpdir + fsep + "screenshot" + timenow +".png")).delete(); - if (!dupImg) System.err.println("ERROR: screenshot does not match golden image"); + var scrShotTmp = tmpdir + fsep + "screenshot" + timenow +".png"; + var goldenImageDir = __DIR__ + "jfx" + fsep + TESTNAME + fsep + "golden"; + makeScreenShot(scrShotTmp); + var dupImg = isDuplicateImages(scrShotTmp, goldenImageDir); + (new File(scrShotTmp)).delete(); + if (!dupImg) System.err.println("ERROR: screenshot does not match the golden image"); exit(0); } }; - raceTimer.schedule(timerTask, WAIT); + raceTimer.schedule(timerTask, 100); } function makeScreenShot(shootToImg) { @@ -70,10 +83,10 @@ function makeScreenShot(shootToImg) { imageJemmy.save(shootToImg); } -function isDuplicateImages(file1, file2) { - var f1 = new File(file1); +function isDuplicateImages(screenShot, goldenDir) { + var f1 = new File(screenShot); var f2; - var sb = new StringBuffer(file2); + var sb = new StringBuffer(goldenDir); if (OSInfo.getOSType() == OSType.WINDOWS) { f2 = new File(sb.append(fsep + "windows.png").toString()); } else if (OSInfo.getOSType() == OSType.LINUX) { @@ -81,8 +94,6 @@ function isDuplicateImages(file1, file2) { } else if (OSInfo.getOSType() == OSType.MACOSX) { f2 = new File(sb.append(fsep + "macosx.png").toString()); } - print(f1.getAbsolutePath()); - print(f2.getAbsolutePath()); if (f1.exists() && f2.exists()) { var image1 = new AWTImage(PNGDecoder.decode(f1.getAbsolutePath())); var image2 = new AWTImage(PNGDecoder.decode(f2.getAbsolutePath())); diff --git a/nashorn/test/script/jfx/flyingimage.js b/nashorn/test/script/jfx/flyingimage.js index 4cf3f7fcab0..844a0fc3c37 100644 --- a/nashorn/test/script/jfx/flyingimage.js +++ b/nashorn/test/script/jfx/flyingimage.js @@ -31,15 +31,6 @@ TESTNAME = "flyingimage"; -var Image = Java.type("javafx.scene.image.Image"); -var Color = Java.type("javafx.scene.paint.Color"); -var Canvas = Java.type("javafx.scene.canvas.Canvas"); -var BorderPane = Java.type("javafx.scene.layout.BorderPane"); -var StackPane = Java.type("javafx.scene.layout.StackPane"); -var Font = Java.type("javafx.scene.text.Font"); -var FontSmoothingType = Java.type("javafx.scene.text.FontSmoothingType"); -var Text = Java.type("javafx.scene.text.Text"); - var WIDTH = 800; var HEIGHT = 600; var canvas = new Canvas(WIDTH, HEIGHT); @@ -48,10 +39,9 @@ function fileToURL(file) { } var imageUrl = fileToURL(__DIR__ + "flyingimage/flyingimage.png"); var img = new Image(imageUrl); -var font = new Font("Arial", 16); -var t = 0; var isFrameRendered = false; function renderFrame() { + var t = frame; var gc = canvas.graphicsContext2D; gc.setFill(Color.web("#cccccc")); gc.fillRect(0, 0, WIDTH, HEIGHT); @@ -61,7 +51,7 @@ function renderFrame() { var c = 200; var msc= 0.5 * HEIGHT / img.height; var sp0 = 0.003; - for (var h = 0; h < c; h++, t++) { + for (var h = 0; h < c; h++) { gc.setTransform(1, 0, 0, 1, 0, 0); var yh = h / (c - 1); gc.translate((0.5 + Math.sin(t * sp0 + h * 0.1) / 3) * WIDTH, 25 + (HEIGHT * 3 / 4 - 40) * (yh * yh)); @@ -69,15 +59,26 @@ function renderFrame() { gc.rotate(90 * Math.sin(t * sp0 + h * 0.1 + Math.PI)); gc.scale(sc, sc); gc.drawImage(img, -img.width / 2, -img.height / 2); - } + } gc.setTransform(1, 0, 0, 1, 0, 0); isFrameRendered = true; } var stack = new StackPane(); var pane = new BorderPane(); - pane.setCenter(canvas); stack.getChildren().add(pane); $STAGE.scene = new Scene(stack); -renderFrame(); -checkImageAndExit(); +var frame = 0; +var timer = new AnimationTimerExtend() { + handle: function handle(now) { + if (frame < 200) { + renderFrame(); + frame++; + } else { + checkImageAndExit(); + timer.stop(); + } + } +}; +timer.start(); + diff --git a/nashorn/test/script/jfx/flyingimage/flyingimage.png b/nashorn/test/script/jfx/flyingimage/flyingimage.png index ecd98a1445aa07983ac7a7caa73042d1d9840dbb..afc44dd3b9684ed3cbfcee573369d76afc46ff95 100644 GIT binary patch literal 1278 zcmeAS@N?(olHy`uVBq!ia0vp^Ux4@~2OE$Smz5O*QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XBj({-ZRBb+Kpqj~^E{-7;ac^%P418iB;u<(3AYvjz#BC0n;kn}>Me~~8-MCcX zZTY{J)9OkXV|=pwHq{pj?wvn`c3+&gz`FcPhyF(O+$nFG{de*|DJj@{tme}1@AD7v z?%n)_;mx@!RqID>_bzg5pDA4(-E{9@=1KRcFBj|X*>YAnFV^3-;kNJ>H=R%Fn={-m z^zNK`&Um^R%iRgBd(ZW}5-L#^E4ACa%KZXw#D$`?u=WMoR=P`%#+>_eO}Io=Y@^)f z7{3dm5eI&qDUozspYrjR;q9WPxPynbrXNdX**n4Yc3`UZ#NkA2Pwo3IFe5zT9QTx4d?35>5_ z;&}~^i{0*X&U)ARYw`m94JuzeE(o|>NZ&E{_v15mp!ob{fA7oRqOztojixq*rhkXl z=lqra%fkwfM%$0yi~A;?4+3d}BNwT!&4!Nu9}DLNp`{7z++XvrFW>&MQ)KbHl?xO* z5J=rlLb-84r}3xLkx;|qe^~FTUp#*yRL%d#*WcAy0{trDIRBxq|9Tc*7X63(P5TZs zT~KzsY^#6Yzv*AA>q7IUW!Z7N?sNX);x3Lk_e>oeHV@P+FGA+b>+A$h}p5^M1bz+z~o`UKdIZdY8yK>ZcssmVE6qXBBJrwRw`$1;2QS zt&`oXtNwyZC$2VaSI+|NjSXLCJS}QkcS31hdfRJ`U7IdDMV%^o28>+kjdMQF47F{_ zJFzG(-K~^!*T&0-qHfJUvy|5{|H!90qwX@6y$dhqFTGg*PnV;LU0HA2gzbtiWP3L} zQQo)bTL~zm+1bWFaoF||lytwI-FGE)lX%_>=9hoXUjO~=|Derohg@Fn?~7q4`8ak7 zyK~?6%W=QZe8Z^7dV{*4nkx{XbS_fG8QGP`Qb@dg;! N44$rjF6*2UngEk$ff@h+ diff --git a/nashorn/test/script/jfx/flyingimage/golden/linux.png b/nashorn/test/script/jfx/flyingimage/golden/linux.png index 4f678853fe9bf3c5491992a106deb6ff4a9f258d..4a668a6d0e9e539c7011918536288e78deaeba39 100644 GIT binary patch literal 68179 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Ĕbh;|0 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 literal 14754 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

(83U_<-ed?^9L$~w@C^*#e$yZ(x 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 DnH6}P literal 12298 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 diff --git a/nashorn/test/script/jfx/flyingimage/golden/windows.png b/nashorn/test/script/jfx/flyingimage/golden/windows.png index e38971487945da06a454073c639fe9769ec09736..e47ae4dfb18a7bb17bb9b26c1e1d63bd6fe3f125 100644 GIT binary patch literal 68588 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

Vc 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 vaOo)MzXx8=uDa1B5u&(NA_ev)PIK?45|RP|Bs literal 9849 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 diff --git a/nashorn/test/script/jfx/kaleidoscope.js b/nashorn/test/script/jfx/kaleidoscope.js index a932c5174da..4430ff01a68 100644 --- a/nashorn/test/script/jfx/kaleidoscope.js +++ b/nashorn/test/script/jfx/kaleidoscope.js @@ -30,13 +30,6 @@ */ TESTNAME = "kaleidoscope"; -WAIT = 4000; - -var Paint = Java.type("javafx.scene.paint.Paint"); -var Canvas = Java.type("javafx.scene.canvas.Canvas"); -var BorderPane = Java.type("javafx.scene.layout.BorderPane"); -var StackPane = Java.type("javafx.scene.layout.StackPane"); -var StrokeLineCap = Java.type("javafx.scene.shape.StrokeLineCap"); var WIDTH = 800; var HEIGHT = 600; @@ -56,26 +49,28 @@ var d=new Array(6); var r,e; var fade; var prv_x,prv_y,prv_x2,prv_y2; +var isFrameRendered = false; function renderFrame() { - a=0.2*angle; - b=0.7*angle; - r=0; - fade=32; - for(var i=0;i<6;i++) - { - c[i]=1.0/(i+1)/2; - d[i]=1.0/(i+1)/2; - } - radius=Math.round((WIDTH+HEIGHT)/8); - e=radius*0.2; - p_x=Math.round(WIDTH/2); - p_y=Math.round(HEIGHT/2); - x=(radius*c[0])*Math.cos(a*d[1])+(radius*c[2])*Math.sin(a*d[3])+(radius*c[4])*Math.sin(a*d[5]); - y=(radius*c[5])*Math.sin(a*d[4])+(radius*c[3])*Math.cos(a*d[2])+(radius*c[1])*Math.cos(a*d[0]); - for (i = 0; i < 800; i++) { - anim(); + if (!isFrameRendered) { + a=0.2*angle; + b=0.7*angle; + r=0; + fade=32; + for(var i=0;i<6;i++) + { + c[i]=1.0/(i+1)/2; + d[i]=1.0/(i+1)/2; + } + radius=Math.round((WIDTH+HEIGHT)/8); + e=radius*0.2; + p_x=Math.round(WIDTH/2); + p_y=Math.round(HEIGHT/2); + x=(radius*c[0])*Math.cos(a*d[1])+(radius*c[2])*Math.sin(a*d[3])+(radius*c[4])*Math.sin(a*d[5]); + y=(radius*c[5])*Math.sin(a*d[4])+(radius*c[3])*Math.cos(a*d[2])+(radius*c[1])*Math.cos(a*d[0]); + isFrameRendered = true; } + anim(); } function anim() { @@ -154,9 +149,19 @@ function draw_line(x,y,x1,y1,x2,y2) { var stack = new StackPane(); var pane = new BorderPane(); - pane.setCenter(canvas); stack.getChildren().add(pane); $STAGE.scene = new Scene(stack); -renderFrame(); -checkImageAndExit(); \ No newline at end of file +var frame = 0; +var timer = new AnimationTimerExtend() { + handle: function handle(now) { + if (frame < 800) { + renderFrame(); + frame++; + } else { + checkImageAndExit(); + timer.stop(); + } + } +}; +timer.start(); diff --git a/nashorn/test/script/jfx/kaleidoscope/golden/linux.png b/nashorn/test/script/jfx/kaleidoscope/golden/linux.png index ccc92fe918b1908c4d3e841b413935d30973c635..4d7e81ad3cdcc48651ff50219d8b7f9a11428bc5 100644 GIT binary patch literal 192428 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

d8uUUTyrLDLCWN^ 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 z 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 MC}_%K<>09Q0HyT}YXATM literal 185802 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ʐnMIy5e2f0^wNHdKh8N=xB$7`; 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 RbhCa-L00t*O2#zs{{Xo7w_5-J delta 11399 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 diff --git a/nashorn/test/script/jfx/kaleidoscope/golden/windows.png b/nashorn/test/script/jfx/kaleidoscope/golden/windows.png index 84ee37c027dafd2cd3407a9a672913023a8d8139..4d7e81ad3cdcc48651ff50219d8b7f9a11428bc5 100644 GIT binary patch literal 192428 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

    d8uUUTyrLDLCWN^ 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 z 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 MC}_%K<>09Q0HyT}YXATM literal 202946 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

    dWg*PJ+ zp{3$kxfG+2%_-z_Iu%Bxo?BN>Z(0bDhms7^iwQnll2opIi7Q@_PQkYFk(isJiMzM&W``HZ2E`xvmm`>X{neZp9-M$OZxrrJBN>$>yk;p?h@^4S3Eyn7>Iw{!uk zTmAy+>d)T8{Zk9D;G=`rPsEY-uIn|xvQ^>DN)Z99;zx9)D`b_~)OsqeiiMT2kTMq0 z#zPxvzb6y)WW2t#-D^JW#ltaeFRC{P zDjj}Rg_9_7Tse-rj-!a@7NqET367_xNNpmeL#Bre*3h;q?smmI!Cb%*aRu`cUn1ZR z`@{L98FG4(;q6Gk2zhOZh#vB)y&jp{C9%6G8a>mxh1Y5DTGgypHLa9StCeVjep;iR z(dcH4rU|WnLT{WhZ%^nq(Pj%~+l|?FVYZ!QUx*S2F8Tw^aDp99Frf%Lnqfy$>|jC= z%dCKBGv? zC{nYEG+LR)DAQPF7Aps@830vyLy_%*fnjw8@K5BA>&Pqk7)G4|-$G28oKhvw`ZPEo z#*)RlONjZ3^AJ1_RlrZvKpnzGR-^=~#0=(^69slK4XVnI=UKr7Qu#=V0U8ocFv5ui ze_$yPB>O`ctK+)KZuF*kT)#PO-X7N)fLqX}&1tn}TB|`D4bv*cv~nG7&|ozRf?mh4 znrS+t)ajCWoEo3U5b$ls!Uo9gN<>`IfCX}f3rT0l>rVy)nV>W34yFSjaIUz=613_e z9SG>^)-p%AxVVa4Se>J-VmNZFK#nAUREtw;2&xUj#sK9&8oxHx0&!hYNu*>w{R%Ivjlyuo@>PpIV0X=iNxy1*~rA0#>*DB@SPGmPPI#AbVfEF@jY-+<#+!aIfX6 zznUMc4Q#sznwqW&mFX5JFWO$CAOQ&9i_`hsr+#` z)^f#mZTUk>>DW*{QI}8TskSuN7Vqw}j&|txcj!UGtZ?baEW+QDM!z;c{R;_w*rB22 z0@|b9?1Qu2JBJNuTRi#B-%j27nuzc-&~G)}n2Ze*_uwJ{#L_`rF^MbXiO6OREkSu# zRNE8nwnh8kfshBYq(uMr`cvu$;i#!g1o@|$W#qZ%jZkp4^^>`>=57q5tdE7LAfD8Fq zULP+UUI~Y}zK}2y=LaLp!H6)D;zkm}P+}#K1AxK{B_*j6Cxn2DC{<*K^GqnaoT#uO z6?&*Bj8~YE3M~RN!!RWTgEtF7nCyosK^W_-%)8+QH;lEG$PSq5h6xs!;)dB?nBjz3 zPMB_oX?BFM7%pV4aLI+Nc?YlaPUI_#*ZaKVTxDtyc_#F$gM(LQ1g1t{cD%w1S7@OU zKT#1RDhwzK;7^z+f_iepX>qE^3nO$TO5_Eh1Zd7mB(oe0g9ZvBF}^>5G&vaNc)VPn zkM0k$J?S3m~AKyF99Gwq7jfhA7EIHQjwn#9nV(GD{4%=dD@n+3?|26!^L`_l@oB8eMe$NU zY3e8Q<6mbHe<-54iM8Ct<7oLPojb?? zamDxG_)e>EcmPBP)R#Hj&w}?SN3}a=@EM{_Akylcvt+yd(I8g68rpjUu&PIgZ*1&- z@v^(fy<56~)h*rfe-yB;{s^$Z`TBLh+HJl9EN~HAJ~?jPyVtyXr+(+Gare&7{d<+O z)8ff-{^+o9bWk}tDjy%E+k5E_oN8xE$GO^RwsM+C?RiseXZgeqpKesoG}SX@{ynlRc z&ywoVrURYc#>B1xD}D`Fg(R+=Csir{u=oJ5>TS{Pp19o!boKyXB@RyV?UP*X0Q8rs zN+(g=iRK%DY}J!2S>i>jKdFsm&CZYtN^LpAdUtZ$ov`{cZfD8~75u)OAIb%yaNL{r z$0||KX9x30hYw;QpY14w_`Qn z6NVs`$0-c>n2;C11RqcZ6y!qzuFua4M*wYr_rhqL58eaD3a38;tYrQZzyj0)*kvVI z;zo-Au!M;UCx!r)AXZ^UKL)HY!az$Qm<%CLamKqUWH(In!vs6LhL|%9eSj*8gU`NnE09XPj1e(kXg}ELdpiBmEh1bjUxH-U4kdNth zilPCL-_3VBHSvhV<1!>7x@gE03mKzfdnU1scsl_A3phVg&im4lKsFvNrv0gKypjs! zLcv@pT8a1p8CMeku%JQ!5VI@o@@G8Ggw>n2Il?+9ZE=Rxk?bav)Wu3$sfsOA^A%db z!cGM4Bx^_6#(tuGl07^rAb_RA{9fu@J|l0=VcWfMrDhE3QOw z=YBeQ^GoR4U&%$xuK???na=q&Hr0}NX>fk}r{s~ZG4bCQQvNMrLEmf9j(2GLN4#QZ zrFbN%ohhql+Ul99cw__eNwxjulSJ(_2V@1rmG0Csojv&EsC0CgJ3J^H9~F;}ff#r1 z-*4PQWF zYFo)<&TnlOw-PmetIpi7G7@%-g#J?==^qxxzd=U*J%?~pFTn&YA~?0ZUrT308_c;M zjr{iWQ$1f@CH*|FpJ>{qGTWG_8yEKALl8a;7%PG+lb%(jXO(HJ>Uw4nnH)@GH94%dK-wq+#$q{OyrGEI7qIH= zs}FoKML4HUW3=g6Z3-L;yP3n<3dk&^uSA53iy;{NC?iy+g^KiWi5Dq@D$$WC!s4qb zLQr8)ZDfitnnoHDPO!oW&@|A%MJR;ZcHtdvoXdkTo2N~ivljcL);OuvV@#XVDrAZf zV>HZY6tg-NenXGfsi|g@(COfAZ7O^|h0m*l{J`PB?HiESos4+mL2J+xDW*VZ0;zDQ z5OKvl!CVjo&X@ArqjnHVtzWHh%SC!72r*5LL#7DVaeM`CRf${E; zrn348G4bb9x4t_3+s_M#zbqxT_v^`0d^2F?YnP{)=ywQ1-vSBGUHAu({7DBE2%%AD zCTc6MrU>m7qo=BJRgI3E)1G#Ca$e+3*5S>Bw-NzmG6ICAP9maHrsCRM+E75mxKYf1 zGDYa9zcED^d2@=eescU@k6?AD2)m^VSl!Ys|J5MYpRvfjd3O5xi8$Hbd2mkvjmaPcL$JXWOo7eXCg9$mLAgtSOT*q@wHD>}n~ooc7VAv|kD+ zKV-~(3qSG|Oy66JlRsM_-{hfxLq>fAbMs4}iyHj*&tXTuw73{KbYKc0>;SNwKeN^foo72l=5Aaq{LTNuwJi4kL zlWIoR)Z-fCh{A|c8OHVIajoT}MeceVN@pE5I7T*{D3f#4hN}>$$VQqZWkQ~(~MrF}SWqeYZ9F~Me zM8R=sY;-w1yc`}ChKB^90d8P`1NAfffU%e^WUdga$n-OO16&CF*APE6B1AqsvK#?l z1YaMOgu$W4WsEx?Pc67#-n03Yp-UL!NC_#XtL@0)Z;utrm zb_DB-Oxc3d_5gBg;f8zIKhavOOv-Bw}V{Vo?g5!?knPVjGIF&m=7fgcC^Mq3?!nsuuZdHttNipkd zXt^A%Rw4NPSm$%4V-u8hQBlT>(7n<{tJZOuaJko$-}(8OuRv!_*Zn_H%KF2VWGbxSo%j9 zz`ia-hObuyU4v;x`5R!-STGw)@R(N;k`GvaX)(hz3gizVqk$r?c-%w$X$fCTG>?0 z=|4WF>+-;I;6$(d17L+6)sU+Z@bCJdYrsnFyGzGj&|6e0$n8<(va!+F%okO~{Awk& zT#2x3YeSOjZ5k+J-#mDsKlo3*7zY`z#IMto$yhiG>aEEc?Di(uO%S`7FN zEnX`}x>E7V?6Po%%b#ZQ#+TS*B*qAVHj1T<&QeFF7Ex16Llb1w7dTv6(~2U2p8+<&`1f>Y!i^ zxrZ{Q{_00QG=3LJ0h`hvn%(w!Cr;aQs+Jj_XC% zV_}t$tY;XRS4o*7m-)mSyYtI6RN#(M$*CoC6}8Bp5)D1VH4R zNDz!5B9U`Wg`5*JNOrT?iNM|hXU3yZ@W`_Li*V2P;P9ZUtM2^<+)v$G_5E(@`gfaY z8g}5WHgjS%(=_ZEdf+q-`kzYEuzA!cfzvb$fltBikYImMxYx_x>Ss&)I9rct8h~^Y z89iiXFNxB#y4ph^^x>BV7MF*XmWLOY2VcAxn4RsN!**j)Lo=vBI86g`U>4m>(=gIM zJ34?J9DXr8i0vPq=^mZ!1u~5rKrZ!T76)gR2j>Wb1mYl(I7ZnRXHq7(%qcM!Arqqx zq^QGPjA9?Xw~JD!Fvl8#}@t7$Q`&ycY>g&6&M*Yigu!7Y})6i-yz-qPM(Dv_7G}?IhdZN)v`D=+r4NzDc z4QpZ%a4W2eL;FF$Ea2Jpdx3yIc6^>~w^L{{3+*P6%?tobo3t4+CS6)%$g0gnb>LhV zsU0UPhq>HtGAYewx3gJUGP&t@P!a)J+(n9+mu1w?=u1B&Ono%+^bfvBH2U9qKmM(O zfBD_K=;|4}?edF^ZV=qR==O>0|#)hzPqR}BNa%=`MHH#jYK@T(&jSej>PAo4? zlSyN1t8k)G{Cej+9!@k$Aa&zcyVoc^>+~)l8|)ssxRWO7qKo@DyZyY~9@b8;V6TU_ z+X290Q_-`f=nxz}ri^+nJOW%YxNGQ@sNh7STe?2U=b1dgXO9HVgVpw!Xmrc`T%d2` z>O1+SF0QGwnX?Kml|xbiRB9tCo)Qk85ssd%DxTsGpDrE#Yobw}dr1R7^N!%SJ63hi z32N|9;DF~V@~4EOrpVifN&s7JBy~6408ZP<)OUkR@Qly7aH7%nW}?w{vA+8;(df2r zc*g*DwV7zNN2KkOXohwTJ#eB?Wiz?gF`Q_0OVKA%w6nK*_`7}ly&k5lkGtE;+38|P zy6KW0x~Pl9?p~+&5NSQ@ly3Z5?<%QlkpNUWv_c$TT_0a-CK_E_99Uc!!p#rNz8Juw zrsvSWD8sX;;TO|G*l}R23Eaf!%*X_8WNf|{m~vvdcXFv8y*4sK9ABbNuCtL;E>a{y zNkyprP2dbz)iy@EjRKHj;j&AG5bRoo$mfYht!9kLg!Va_ zDcS7EfD7eNBX^l?NA&0Z?IA0#V{i2dZuqZ8pM0zD$G_A4@ozn*&u!i?{K4w<_nFH- z+F?9vCK@G00~DWw4uS%NMl(93ncPn1R1vv4_MRVG3Tk~utxIW)Ig2`G6m;U}@;&|_({$5J_PAwrMq(CzqYshn+_Y13kmm<-!C%VVh= zYgT7TD_mtYbfJk|sf+jW^5s^!BEGuXdMuR_3e#e4Le`B>Tjmpb3={t&OwWJs`;VJ1v54_t99OStsT>*|L7`5PHin4A$5J_+3;6yua_7=|`vR$FgWpEtJR$Sj zn9}ET$#bftjV5_Y6+a^iI_R72G|96K@pG!Ijked$*m=&_?d2c!@(!QT_ntE3&uEA3 z%)<_@0uW93~UtQaLm#f<~L7lHgJ~^NZs++|=^o1a1~hT*7WFAr~>z^B5!! zIX#a+FC%AHFxbWE7X;)Sc^XHaCa^FoOyoKr0~=b1q==DZ{v=g6!QzeZS;GQ)KX0Rx zx$;a%=#UUPW$Qf(V!xg|>|~DxH!%tO7o~Ed*i;5^kN`yv!Z|<6|`Yo zd&9s*4eX9x@=xe9f44CDL(UoDjbKluMe zIl?bXzfQ5|uO)K_lDazo>W{KJm$t;e zUhG-!ael4XGhi&4-MZ)g*J97UGehu9_hqr?^Ot*fcZao_^z&lR!SzCjoOUk94YQK9 zf5MM_UhKK&)UjjYpuAb^S-9NET5O{%Kij}RBQ8B7;yc#X zJ2%LEE0obS#`GF}dX0u4(NRPOc7ySP#+qfYaU8)4o4>jtSfPp5Xp&Xx7M-%oUEN}1 zcoYn26}5y%tgMc&txa$k2p$W;=O7p?1dD~@@%z`Q;JnRZ&*W|brH91s*$}i-M4gPS zPL`~LvDv|twKHYUHiYf8%`WyXfUUNT%?|qBbDFG;BJF1G_Y34*jNNC=V$V-#d!Nzv zJDbJ+x;UQ~d+uOspR$fWfr~wBp1}o})$J7ZW3lHhs_wDa^V3!NQ@s4sh21C1dr#&8 zUF|%@A9fIr2gqgsSW8+scf&N_-Ay(%^SmFz^$Ovd(7T^5>^;RFJzYHlCut+8yQs(D zv>jA^J5~Kx7SfAn3*0xwQ8FyooOcN1k;x)QpmCeTk^TEZQ*|TKk3t-lD8fu-6 zATm*F%;{CiD0#hSZM9>4v2A_%DewyF5?t(Agzo~baX{+~t#I}^17XVz@v zk!^oG@Z;YFPCnW8EyCnSo5YVZmbtVOp9_)_5$a>HXAmH-?hY^S4vJqCdk&uKeJ9Og z&k2L7S?pPAGe6SRR{`tD>jHuKQ^lTtI)^*BamwD*TE(7Qtp!-E)@r}*BG&t#_ZZgC zUBvoYvWANf?^3nPudZXca%ppuu^xZE9~n#O_k0zwltG^c3aW!{Eo3mK46d>^&GP}q#|Ih5epNu^DgP~9UuNPzg z(|km$WCItKbTuC_D>*a$AI**a4<7EHLfeB^j@j$@Tq(BT^Wv=5nLq#;2`@(y#Bg#W z94C2$XefZq$FRl7Ou0EDCKOl?XVOL)1C!<9+Ta$xPq@_0TIi(V+9``|wB>f%5}02* zNDIBB#ewz30WyA!x;jZ;L-S}@0b@?eSyJq+YE;ytW18H++%XE|cKLxrCp0OD7WwR< zbaqQPvn@vRdDARDN+QHaM5s+MdP{;5i4g+v1WztgSKFS}Sfo!}eBUOVfslX1|?J?iBjJ!c#|XB<9b9Dc?)_>{i; z6nxLu^zbyj!sC9CZcwD_X6Zg-sGrhdy6T{6dl<%E8vIy#KhxSxHFr~ty>xRYQQxt4 z+>X}(#`)EQJldSLCFi#8IaHcCIGz9>QVgO%0A;^D%+j_dR-?5_YT+?@w4ZRF& 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

    Q+N$et@4%3? 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 ih_BCvRRS*qS8Rq=^nd)N09&Y&$KNmT6xBEM#y 0, javascript returns a negative number for a % b +// this is a variant of the % operator that adds b to the result in this case +function positive_mod(a, b) { + // ECMA 262 11.5.3: Applying the % Operator + // remainder operator does not convert operands to integers, + // although negative results are possible + + return ((a % b) + b) % b; +} + +// pre-compute color styles that will be used for color cycling +function populate_colors(color_speed, color_styles, branch_opacity) { + // used in calculation of RGB values + var two_thirds_pi = Math.PI * 2 / 3; + var four_thirds_pi = Math.PI * 4 / 3; + var two_pi = Math.PI * 2; + + // hue does represent hue, but not in the conventional HSL scheme + for(var hue = 0; hue < two_pi; hue += color_speed) { + var r = Math.floor(Math.sin(hue) * 128 + 128); + var g = Math.floor(Math.sin(hue + two_thirds_pi) * 128 + 128); + var b = Math.floor(Math.sin(hue + four_thirds_pi) * 128 + 128); + color = "rgba(" + [r, g, b, branch_opacity].join() + ")"; + + color_styles.push(color); + } +} + +// apply initial settings to canvas object +function setup_canvas() { + paper = canvas.graphicsContext2D; + paper.setFill(Paint.valueOf('rgb(0, 0, 0)')); + paper.fillRect(0, 0, WIDTH, HEIGHT); + paper.setFill(Paint.valueOf("rgba(0, 0, 0, 0.005)")); + paper.setStroke(Paint.valueOf("rgba(128, 128, 64, " + String(branch_opacity) + ")")); +} + +populate_colors(color_speed, color_styles, branch_opacity); +setup_canvas(); + +var stack = new StackPane(); +var pane = new BorderPane(); +pane.setCenter(canvas); +stack.getChildren().add(pane); +$STAGE.scene = new Scene(stack); +var timer = new AnimationTimerExtend() { + handle: function handle(now) { + if (frame < 200) { + draw_frame(); + } else { + checkImageAndExit(); + timer.stop(); + } + } +}; +timer.start(); + diff --git a/nashorn/test/script/jfx/spread/golden/linux.png b/nashorn/test/script/jfx/spread/golden/linux.png new file mode 100644 index 0000000000000000000000000000000000000000..fc535a47ac0e703d32f1bddd4a4f53ab1e1a5ca1 GIT binary patch literal 201159 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
    oqj*DU{f;K=K|pV+b4QJwB63ob#g?r6Flg> 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õ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 literal 0 HcmV?d00001 diff --git a/nashorn/test/script/jfx/spread/golden/macosx.png b/nashorn/test/script/jfx/spread/golden/macosx.png new file mode 100644 index 0000000000000000000000000000000000000000..c288162329ae33593f708725618d475a9762b74c GIT binary patch literal 199251 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 z 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⋘hON`sAj9X0hzmQKCu7Ji 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õ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 literal 0 HcmV?d00001 From fe6f3e2439db3d75d114c98cf661e8ecb32824fc Mon Sep 17 00:00:00 2001 From: Paul Sandoz Date: Tue, 5 Nov 2013 12:08:12 +0100 Subject: [PATCH 022/145] 8027712: DistinctOpTest fails for unordered test Reviewed-by: henryjen, alanb --- .../openjdk/tests/java/util/stream/DistinctOpTest.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/DistinctOpTest.java b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/DistinctOpTest.java index 7d26925a1f2..69432cfedf6 100644 --- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/DistinctOpTest.java +++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/DistinctOpTest.java @@ -54,10 +54,14 @@ public class DistinctOpTest extends OpTestCase { // These tests should short-circuit, otherwise will fail with a time-out // or an OOME - Integer one = Stream.iterate(1, i -> i + 1).unordered().parallel().distinct().findAny().get(); - assertEquals(one.intValue(), 1); + // Note that since the streams are unordered and any element is requested + // (a non-deterministic process) the only assertion that can be made is + // that an element should be found - Optional oi = ThreadLocalRandom.current().ints().boxed().parallel().distinct().findAny(); + Optional oi = Stream.iterate(1, i -> i + 1).unordered().parallel().distinct().findAny(); + assertTrue(oi.isPresent()); + + oi = ThreadLocalRandom.current().ints().boxed().parallel().distinct().findAny(); assertTrue(oi.isPresent()); } From 33be168ccb7c6d033fce9cbe541f4c118811aa46 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 5 Nov 2013 11:18:20 -0800 Subject: [PATCH 023/145] 8027860: [TEST_BUG] File not closed in javax/xml/jaxp/parsers/8022548/XOMParserTest.java Reviewed-by: alanb --- .../jaxp/parsers/8022548/XOMParserTest.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java b/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java index ba12d0ddc86..15915d04912 100644 --- a/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java +++ b/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java @@ -22,7 +22,8 @@ */ /** - * @test @bug 8022548 + * @test + * @bug 8022548 * @summary test that a parser can use DTDConfiguration * @run main XOMParserTest */ @@ -60,30 +61,27 @@ public class XOMParserTest extends TestBase { } public final void testTransform() { + String inFilename = filePath + "/JDK8022548.xml"; + String xslFilename = filePath + "/JDK8022548.xsl"; + String outFilename = "JDK8022548.out"; - try { + try (InputStream xslInput = new FileInputStream(xslFilename); + InputStream xmlInput = new FileInputStream(inFilename); + OutputStream out = new FileOutputStream(outFilename); + ) { - String inFilename = filePath + "/JDK8022548.xml"; - String xslFilename = filePath + "/JDK8022548.xsl"; - String outFilename = "JDK8022548.out"; StringWriter sw = new StringWriter(); // Create transformer factory TransformerFactory factory = TransformerFactory.newInstance(); - // set the translet name -// factory.setAttribute("translet-name", "myTranslet"); - - // set the destination directory -// factory.setAttribute("destination-directory", "c:\\temp"); -// factory.setAttribute("generate-translet", Boolean.TRUE); // Use the factory to create a template containing the xsl file - Templates template = factory.newTemplates(new StreamSource(new FileInputStream(xslFilename))); + Templates template = factory.newTemplates(new StreamSource(xslInput)); // Use the template to create a transformer Transformer xformer = template.newTransformer(); // Prepare the input and output files - Source source = new StreamSource(new FileInputStream(inFilename)); - Result result = new StreamResult(new FileOutputStream(outFilename)); + Source source = new StreamSource(xmlInput); + Result result = new StreamResult(outFilename); //Result result = new StreamResult(sw); // Apply the xsl file to the source file and write the result to the output file xformer.transform(source, result); From 1b7f902c51a23227550663bbebbe4e9a0591d56b Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Tue, 5 Nov 2013 17:33:26 -0800 Subject: [PATCH 024/145] 8022208: Intermittent test failures in java/lang/Thread/ThreadStateTest.java 6944188: ThreadMXBean/ThreadStateTest.java fails intermittently Reviewed-by: dholmes, chegar --- .../lang/Thread/ThreadStateController.java | 340 ++++++++++++++ .../java/lang/Thread/ThreadStateTest.java | 304 ++----------- .../ThreadMXBean/ThreadMXBeanStateTest.java | 230 ++++++++++ .../ThreadMXBean/ThreadStateTest.java | 424 ------------------ 4 files changed, 597 insertions(+), 701 deletions(-) create mode 100644 jdk/test/java/lang/Thread/ThreadStateController.java create mode 100644 jdk/test/java/lang/management/ThreadMXBean/ThreadMXBeanStateTest.java delete mode 100644 jdk/test/java/lang/management/ThreadMXBean/ThreadStateTest.java diff --git a/jdk/test/java/lang/Thread/ThreadStateController.java b/jdk/test/java/lang/Thread/ThreadStateController.java new file mode 100644 index 00000000000..2d876b0ec41 --- /dev/null +++ b/jdk/test/java/lang/Thread/ThreadStateController.java @@ -0,0 +1,340 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.util.concurrent.Phaser; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.LockSupport; + +/** + * ThreadStateController allows a thread to request this thread to transition + * to a specific thread state. The {@linkplain #transitionTo request} is + * a blocking call that the calling thread will wait until this thread is about + * going to the new state. Only one request of state transition at a time + * is supported (the Phaser expects only parties of 2 to arrive and advance + * to next phase). + */ +public class ThreadStateController extends Thread { + // used to achieve waiting states + private final Object lock; + public ThreadStateController(String name, Object lock) { + super(name); + this.lock = lock; + } + + public void checkThreadState(Thread.State expected) { + // maximum number of retries when checking for thread state. + final int MAX_RETRY = 500; + + // wait for the thread to transition to the expected state. + // There is a small window between the thread checking the state + // and the thread actual entering that state. + Thread.State state; + int retryCount=0; + while ((state = getState()) != expected && retryCount < MAX_RETRY) { + pause(10); + retryCount++; + } + + if (state == null) { + throw new RuntimeException(getName() + " expected to have " + + expected + " but got null."); + } + + if (state != expected) { + throw new RuntimeException(String.format("%s expected in %s state but got %s " + + "(iterations %d interrupted %d)%n", + getName(), expected, state, iterations.get(), interrupted.get())); + } + } + + public static void pause(long ms) { + try { + Thread.sleep(ms); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + // Phaser to sync between the main thread putting + // this thread into various states + private final Phaser phaser = new Phaser(2); + private volatile int newState = S_RUNNABLE; + private volatile int state = 0; + private boolean done = false; + + private static final int S_RUNNABLE = 1; + private static final int S_BLOCKED = 2; + private static final int S_WAITING = 3; + private static final int S_TIMED_WAITING = 4; + private static final int S_PARKED = 5; + private static final int S_TIMED_PARKED = 6; + private static final int S_SLEEPING = 7; + private static final int S_TERMINATE = 8; + + // for debugging + private AtomicInteger iterations = new AtomicInteger(); + private AtomicInteger interrupted = new AtomicInteger(); + public void run() { + // this thread has started + while (!done) { + // state transition + int nextState = state; + if (newState != state) { + nextState = newState; + iterations.set(0); + interrupted.set(0); + } + iterations.incrementAndGet(); + switch (nextState) { + case S_RUNNABLE: { + stateChange(nextState); + double sum = 0; + for (int i = 0; i < 1000; i++) { + double r = Math.random(); + double x = Math.pow(3, r); + sum += x - r; + } + break; + } + case S_BLOCKED: { + System.out.format("%d: %s is going to block (interations %d)%n", + getId(), getName(), iterations.get()); + stateChange(nextState); + // going to block on lock + synchronized (lock) { + System.out.format("%d: %s acquired the lock (interations %d)%n", + getId(), getName(), iterations.get()); + try { + // this thread has escaped the BLOCKED state + // release the lock and a short wait before continue + lock.wait(10); + } catch (InterruptedException e) { + // ignore + interrupted.incrementAndGet(); + } + } + break; + } + case S_WAITING: { + synchronized (lock) { + System.out.format("%d: %s is going to waiting (interations %d interrupted %d)%n", + getId(), getName(), iterations.get(), interrupted.get()); + try { + stateChange(nextState); + lock.wait(); + System.out.format("%d: %s wakes up from waiting (interations %d interrupted %d)%n", + getId(), getName(), iterations.get(), interrupted.get()); + } catch (InterruptedException e) { + // ignore + interrupted.incrementAndGet(); + } + } + break; + } + case S_TIMED_WAITING: { + synchronized (lock) { + System.out.format("%d: %s is going to timed waiting (interations %d interrupted %d)%n", + getId(), getName(), iterations.get(), interrupted.get()); + try { + stateChange(nextState); + lock.wait(10000); + System.out.format("%d: %s wakes up from timed waiting (interations %d interrupted %d)%n", + getId(), getName(), iterations.get(), interrupted.get()); + } catch (InterruptedException e) { + // ignore + interrupted.incrementAndGet(); + } + } + break; + } + case S_PARKED: { + System.out.format("%d: %s is going to park (interations %d)%n", + getId(), getName(), iterations.get()); + stateChange(nextState); + LockSupport.park(); + break; + } + case S_TIMED_PARKED: { + System.out.format("%d: %s is going to timed park (interations %d)%n", + getId(), getName(), iterations.get()); + long deadline = System.currentTimeMillis() + 10000*1000; + stateChange(nextState); + LockSupport.parkUntil(deadline); + break; + } + case S_SLEEPING: { + System.out.format("%d: %s is going to sleep (interations %d interrupted %d)%n", + getId(), getName(), iterations.get(), interrupted.get()); + try { + stateChange(nextState); + Thread.sleep(1000000); + } catch (InterruptedException e) { + // finish sleeping + interrupted.incrementAndGet(); + } + break; + } + case S_TERMINATE: { + done = true; + stateChange(nextState); + break; + } + default: + break; + } + } + } + + /** + * Change the state if it matches newState. + */ + private void stateChange(int nextState) { + // no state change + if (state == nextState) + return; + + // transition to the new state + if (newState == nextState) { + state = nextState; + phaser.arrive(); + System.out.format("%d: state change: %s %s%n", + getId(), toStateName(nextState), phaserToString(phaser)); + return; + } + + // should never reach here + throw new RuntimeException("current " + state + " next " + nextState + + " new state " + newState); + } + + /** + * Blocks until this thread transitions to the given state + */ + public void transitionTo(Thread.State tstate) throws InterruptedException { + switch (tstate) { + case RUNNABLE: + nextState(S_RUNNABLE); + break; + case BLOCKED: + nextState(S_BLOCKED); + break; + case WAITING: + nextState(S_WAITING); + break; + case TIMED_WAITING: + nextState(S_TIMED_WAITING); + break; + case TERMINATED: + nextState(S_TERMINATE); + break; + default: + break; + } + } + + /** + * Blocks until this thread transitions to sleeping + */ + public void transitionToSleep() throws InterruptedException { + nextState(S_SLEEPING); + } + + /** + * Blocks until this thread transitions to park or timed park + */ + public void transitionToPark(boolean timed) throws InterruptedException { + nextState(timed ? S_TIMED_PARKED : S_PARKED); + } + + private void nextState(int s) throws InterruptedException { + final long id = Thread.currentThread().getId(); + System.out.format("%d: wait until the thread transitions to %s %s%n", + id, toStateName(s), phaserToString(phaser)); + this.newState = s; + int phase = phaser.arrive(); + System.out.format("%d: awaiting party arrive %s %s%n", + id, toStateName(s), phaserToString(phaser)); + for (;;) { + // when this thread has changed its state before it waits or parks + // on a lock, a potential race might happen if it misses the notify + // or unpark. Hence await for the phaser to advance with timeout + // to cope with this race condition. + switch (state) { + case S_WAITING: + case S_TIMED_WAITING: + synchronized (lock) { + lock.notify(); + } + break; + case S_PARKED: + case S_TIMED_PARKED: + LockSupport.unpark(this); + break; + case S_SLEEPING: + this.interrupt(); + break; + case S_BLOCKED: + default: + break; + } + try { + phaser.awaitAdvanceInterruptibly(phase, 100, TimeUnit.MILLISECONDS); + System.out.format("%d: arrived at %s %s%n", + id, toStateName(s), phaserToString(phaser)); + return; + } catch (TimeoutException ex) { + // this thread hasn't arrived at this phase + System.out.format("%d: Timeout: %s%n", id, phaser); + } + } + } + private String phaserToString(Phaser p) { + return "[phase = " + p.getPhase() + + " parties = " + p.getRegisteredParties() + + " arrived = " + p.getArrivedParties() + "]"; + } + private String toStateName(int state) { + switch (state) { + case S_RUNNABLE: + return "runnable"; + case S_WAITING: + return "waiting"; + case S_TIMED_WAITING: + return "timed waiting"; + case S_PARKED: + return "parked"; + case S_TIMED_PARKED: + return "timed parked"; + case S_SLEEPING: + return "sleeping"; + case S_BLOCKED: + return "blocked"; + case S_TERMINATE: + return "terminated"; + default: + return "unknown " + state; + } + } +} diff --git a/jdk/test/java/lang/Thread/ThreadStateTest.java b/jdk/test/java/lang/Thread/ThreadStateTest.java index c4fa18850b2..b73421eb4c0 100644 --- a/jdk/test/java/lang/Thread/ThreadStateTest.java +++ b/jdk/test/java/lang/Thread/ThreadStateTest.java @@ -21,77 +21,64 @@ * questions. */ +import static java.lang.Thread.State.*; + /* * @test - * @bug 5014783 + * @bug 5014783 8022208 * @summary Basic unit test of thread states returned by * Thread.getState(). * * @author Mandy Chung - * - * @build ThreadStateTest + * @build ThreadStateTest ThreadStateController * @run main ThreadStateTest */ -import java.util.concurrent.locks.LockSupport; -import java.util.concurrent.Phaser; - public class ThreadStateTest { - // maximum number of retries when checking for thread state. - static final int MAX_RETRY = 500; - private static boolean testFailed = false; // used to achieve waiting states - static final Object globalLock = new Object(); + private static final Object globalLock = new Object(); - public static void main(String[] argv) { + public static void main(String[] argv) throws Exception { // Call Thread.getState to force all initialization done // before test verification begins. Thread.currentThread().getState(); - MyThread myThread = new MyThread("MyThread"); + ThreadStateController thread = new ThreadStateController("StateChanger", globalLock); + thread.setDaemon(true); // before myThread starts - checkThreadState(myThread, Thread.State.NEW); + thread.checkThreadState(NEW); - myThread.start(); - myThread.waitUntilStarted(); - checkThreadState(myThread, Thread.State.RUNNABLE); + thread.start(); + thread.transitionTo(RUNNABLE); + thread.checkThreadState(RUNNABLE); synchronized (globalLock) { - myThread.goBlocked(); - checkThreadState(myThread, Thread.State.BLOCKED); + thread.transitionTo(BLOCKED); + thread.checkThreadState(BLOCKED); } - myThread.goWaiting(); - checkThreadState(myThread, Thread.State.WAITING); + thread.transitionTo(WAITING); + thread.checkThreadState(WAITING); - myThread.goTimedWaiting(); - checkThreadState(myThread, Thread.State.TIMED_WAITING); + thread.transitionTo(TIMED_WAITING); + thread.checkThreadState(TIMED_WAITING); + thread.transitionToPark(true /* timed park*/); + thread.checkThreadState(TIMED_WAITING); - /* - *********** park and parkUntil seems not working - * ignore this case for now. - * Bug ID 5062095 - *********************************************** + thread.transitionToPark(false /* indefinite park */); + thread.checkThreadState(WAITING); - myThread.goParked(); - checkThreadState(myThread, Thread.State.WAITING); + thread.transitionToSleep(); + thread.checkThreadState(TIMED_WAITING); - myThread.goTimedParked(); - checkThreadState(myThread, Thread.State.TIMED_WAITING); - */ - - - myThread.goSleeping(); - checkThreadState(myThread, Thread.State.TIMED_WAITING); - - myThread.terminate(); - checkThreadState(myThread, Thread.State.TERMINATED); + thread.transitionTo(TERMINATED); + thread.checkThreadState(TERMINATED); try { - myThread.join(); + thread.join(); } catch (InterruptedException e) { e.printStackTrace(); System.out.println("Unexpected exception."); @@ -102,241 +89,4 @@ public class ThreadStateTest { throw new RuntimeException("TEST FAILED."); System.out.println("Test passed."); } - - private static void checkThreadState(Thread t, Thread.State expected) { - // wait for the thread to transition to the expected state. - // There is a small window between the thread checking the state - // and the thread actual entering that state. - Thread.State state; - int retryCount=0; - while ((state = t.getState()) != expected && retryCount < MAX_RETRY) { - if (state != Thread.State.RUNNABLE) { - throw new RuntimeException("Thread not in expected state yet," + - " but it should at least be RUNNABLE"); - } - goSleep(10); - retryCount++; - } - - System.out.println("Checking thread state " + state); - if (state == null) { - throw new RuntimeException(t.getName() + " expected to have " + - expected + " but got null."); - } - - if (state != expected) { - throw new RuntimeException(t.getName() + " expected to have " + - expected + " but got " + state); - } - } - - private static void goSleep(long ms) { - try { - Thread.sleep(ms); - } catch (InterruptedException e) { - e.printStackTrace(); - System.out.println("Unexpected exception."); - testFailed = true; - } - } - - static class MyThread extends Thread { - // Phaser to sync between the main thread putting - // this thread into various states - private Phaser phaser = new Phaser(2); - - MyThread(String name) { - super(name); - } - - private final int RUNNABLE = 0; - private final int BLOCKED = 1; - private final int WAITING = 2; - private final int TIMED_WAITING = 3; - private final int PARKED = 4; - private final int TIMED_PARKED = 5; - private final int SLEEPING = 6; - private final int TERMINATE = 7; - - private volatile int state = RUNNABLE; - - private boolean done = false; - public void run() { - // Signal main thread to continue. - phaser.arriveAndAwaitAdvance(); - - while (!done) { - switch (state) { - case RUNNABLE: { - double sum = 0; - for (int i = 0; i < 1000; i++) { - double r = Math.random(); - double x = Math.pow(3, r); - sum += x - r; - } - break; - } - case BLOCKED: { - // signal main thread. - phaser.arrive(); - System.out.println(" myThread is going to block."); - synchronized (globalLock) { - // finish blocking - state = RUNNABLE; - } - break; - } - case WAITING: { - synchronized (globalLock) { - // signal main thread. - phaser.arrive(); - System.out.println(" myThread is going to wait."); - try { - globalLock.wait(); - } catch (InterruptedException e) { - // ignore - } - } - break; - } - case TIMED_WAITING: { - synchronized (globalLock) { - // signal main thread. - phaser.arrive(); - System.out.println(" myThread is going to timed wait."); - try { - globalLock.wait(10000); - } catch (InterruptedException e) { - // ignore - } - } - break; - } - case PARKED: { - // signal main thread. - phaser.arrive(); - System.out.println(" myThread is going to park."); - LockSupport.park(); - // give a chance for the main thread to block - goSleep(10); - break; - } - case TIMED_PARKED: { - // signal main thread. - phaser.arrive(); - System.out.println(" myThread is going to timed park."); - long deadline = System.currentTimeMillis() + 10000*1000; - LockSupport.parkUntil(deadline); - - // give a chance for the main thread to block - goSleep(10); - break; - } - case SLEEPING: { - // signal main thread. - phaser.arrive(); - System.out.println(" myThread is going to sleep."); - try { - Thread.sleep(1000000); - } catch (InterruptedException e) { - // finish sleeping - } - break; - } - case TERMINATE: { - done = true; - // signal main thread. - phaser.arrive(); - break; - } - default: - break; - } - } - } - - public void waitUntilStarted() { - // wait for MyThread. - phaser.arriveAndAwaitAdvance(); - } - - public void goBlocked() { - System.out.println("Waiting myThread to go blocked."); - setState(BLOCKED); - // wait for MyThread to get to a point just before being blocked - phaser.arriveAndAwaitAdvance(); - } - - public void goWaiting() { - System.out.println("Waiting myThread to go waiting."); - setState(WAITING); - // wait for MyThread to get to just before wait on object. - phaser.arriveAndAwaitAdvance(); - } - - public void goTimedWaiting() { - System.out.println("Waiting myThread to go timed waiting."); - setState(TIMED_WAITING); - // wait for MyThread to get to just before timed wait call. - phaser.arriveAndAwaitAdvance(); - } - - public void goParked() { - System.out.println("Waiting myThread to go parked."); - setState(PARKED); - // wait for MyThread to get to just before parked. - phaser.arriveAndAwaitAdvance(); - } - - public void goTimedParked() { - System.out.println("Waiting myThread to go timed parked."); - setState(TIMED_PARKED); - // wait for MyThread to get to just before timed park. - phaser.arriveAndAwaitAdvance(); - } - - public void goSleeping() { - System.out.println("Waiting myThread to go sleeping."); - setState(SLEEPING); - // wait for MyThread to get to just before sleeping - phaser.arriveAndAwaitAdvance(); - } - - public void terminate() { - System.out.println("Waiting myThread to terminate."); - setState(TERMINATE); - // wait for MyThread to get to just before terminate - phaser.arriveAndAwaitAdvance(); - } - - private void setState(int newState) { - switch (state) { - case BLOCKED: - while (state == BLOCKED) { - goSleep(10); - } - state = newState; - break; - case WAITING: - case TIMED_WAITING: - state = newState; - synchronized (globalLock) { - globalLock.notify(); - } - break; - case PARKED: - case TIMED_PARKED: - state = newState; - LockSupport.unpark(this); - break; - case SLEEPING: - state = newState; - this.interrupt(); - break; - default: - state = newState; - break; - } - } - } } diff --git a/jdk/test/java/lang/management/ThreadMXBean/ThreadMXBeanStateTest.java b/jdk/test/java/lang/management/ThreadMXBean/ThreadMXBeanStateTest.java new file mode 100644 index 00000000000..dc4fe3d1016 --- /dev/null +++ b/jdk/test/java/lang/management/ThreadMXBean/ThreadMXBeanStateTest.java @@ -0,0 +1,230 @@ +/* + * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4967283 5080203 8022208 + * @summary Basic unit test of thread states returned by + * ThreadMXBean.getThreadInfo.getThreadState(). + * It also tests lock information returned by ThreadInfo. + * + * @author Mandy Chung + * + * @library ../../Thread + * @build ThreadMXBeanStateTest ThreadStateController + * @run main ThreadMXBeanStateTest + */ + +import java.lang.management.ManagementFactory; +import java.lang.management.ThreadMXBean; +import java.lang.management.ThreadInfo; +import static java.lang.Thread.State.*; + +public class ThreadMXBeanStateTest { + private static final ThreadMXBean tm = ManagementFactory.getThreadMXBean(); + + static class Lock { + private String name; + Lock(String name) { + this.name = name; + } + public String toString() { + return name; + } + } + private static Lock globalLock = new Lock("my lock"); + + public static void main(String[] argv) throws Exception { + // Force thread state initialization now before the test + // verification begins. + Thread.currentThread().getState(); + ThreadStateController thread = new ThreadStateController("StateChanger", globalLock); + thread.setDaemon(true); + + // before myThread starts + thread.checkThreadState(NEW); + + thread.start(); + thread.transitionTo(RUNNABLE); + thread.checkThreadState(RUNNABLE); + checkLockInfo(thread, RUNNABLE, null, null); + + thread.suspend(); + ThreadStateController.pause(10); + thread.checkThreadState(RUNNABLE); + checkSuspendedThreadState(thread, RUNNABLE); + thread.resume(); + + synchronized (globalLock) { + thread.transitionTo(BLOCKED); + thread.checkThreadState(BLOCKED); + checkLockInfo(thread, BLOCKED, + globalLock, Thread.currentThread()); + } + + thread.transitionTo(WAITING); + thread.checkThreadState(WAITING); + checkLockInfo(thread, Thread.State.WAITING, + globalLock, null); + + thread.transitionTo(TIMED_WAITING); + thread.checkThreadState(TIMED_WAITING); + checkLockInfo(thread, TIMED_WAITING, + globalLock, null); + + + thread.transitionToPark(true /* timed park */); + thread.checkThreadState(TIMED_WAITING); + checkLockInfo(thread, TIMED_WAITING, null, null); + + thread.transitionToPark(false /* indefinite park */); + thread.checkThreadState(WAITING); + checkLockInfo(thread, WAITING, null, null); + + thread.transitionToSleep(); + thread.checkThreadState(TIMED_WAITING); + checkLockInfo(thread, TIMED_WAITING, null, null); + + thread.transitionTo(TERMINATED); + thread.checkThreadState(TERMINATED); + + try { + thread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("TEST FAILED: Unexpected exception."); + throw new RuntimeException(e); + } + System.out.println("Test passed."); + } + + private static void checkSuspendedThreadState(ThreadStateController t, Thread.State state) { + ThreadInfo info = getThreadInfo(t, state); + if (info == null) { + throw new RuntimeException(t.getName() + + " expected to have ThreadInfo " + + " but got null."); + } + + if (info.getThreadState() != state) { + throw new RuntimeException(t.getName() + " expected to be in " + + state + " state but got " + info.getThreadState()); + } + + if (!info.isSuspended()) { + throw new RuntimeException(t.getName() + " expected to be suspended " + + " but isSuspended() returns " + info.isSuspended()); + } + } + + private static String getLockName(Object lock) { + if (lock == null) return null; + + return lock.getClass().getName() + '@' + + Integer.toHexString(System.identityHashCode(lock)); + } + + // maximum number of retries when checking for thread state. + private static final int MAX_RETRY = 500; + private static ThreadInfo getThreadInfo(ThreadStateController t, Thread.State expected) { + // wait for the thread to transition to the expected state. + // There is a small window between the thread checking the state + // and the thread actual entering that state. + int retryCount=0; + ThreadInfo info = tm.getThreadInfo(t.getId()); + while (info.getThreadState() != expected && retryCount < MAX_RETRY) { + ThreadStateController.pause(10); + retryCount++; + info = tm.getThreadInfo(t.getId()); + } + return info; + } + + private static void checkLockInfo(ThreadStateController t, Thread.State state, + Object lock, Thread owner) { + ThreadInfo info = getThreadInfo(t, state); + if (info == null) { + throw new RuntimeException(t.getName() + + " expected to have ThreadInfo " + + " but got null."); + } + + if (info.getThreadState() != state) { + throw new RuntimeException(t.getName() + " expected to be in " + + state + " state but got " + info.getThreadState()); + } + + if (lock == null && info.getLockName() != null) { + throw new RuntimeException(t.getName() + + " expected not to be blocked on any lock" + + " but got " + info.getLockName()); + } + String expectedLockName = getLockName(lock); + if (lock != null && info.getLockName() == null) { + throw new RuntimeException(t.getName() + + " expected to be blocked on lock [" + expectedLockName + + "] but got null."); + } + + if (lock != null && !expectedLockName.equals(info.getLockName())) { + throw new RuntimeException(t.getName() + + " expected to be blocked on lock [" + expectedLockName + + "] but got [" + info.getLockName() + "]."); + } + + if (owner == null && info.getLockOwnerName() != null) { + throw new RuntimeException("Lock owner is expected " + + " to be null but got " + info.getLockOwnerName()); + } + + if (owner != null && info.getLockOwnerName() == null) { + throw new RuntimeException("Lock owner is expected to be " + + owner.getName() + + " but got null."); + } + if (owner != null && !info.getLockOwnerName().equals(owner.getName())) { + throw new RuntimeException("Lock owner is expected to be " + + owner.getName() + + " but got " + owner.getName()); + } + if (owner == null && info.getLockOwnerId() != -1) { + throw new RuntimeException("Lock owner is expected " + + " to be -1 but got " + info.getLockOwnerId()); + } + + if (owner != null && info.getLockOwnerId() <= 0) { + throw new RuntimeException("Lock owner is expected to be " + + owner.getName() + "(id = " + owner.getId() + + ") but got " + info.getLockOwnerId()); + } + if (owner != null && info.getLockOwnerId() != owner.getId()) { + throw new RuntimeException("Lock owner is expected to be " + + owner.getName() + "(id = " + owner.getId() + + ") but got " + info.getLockOwnerId()); + } + if (info.isSuspended()) { + throw new RuntimeException(t.getName() + + " isSuspended() returns " + info.isSuspended()); + } + } +} diff --git a/jdk/test/java/lang/management/ThreadMXBean/ThreadStateTest.java b/jdk/test/java/lang/management/ThreadMXBean/ThreadStateTest.java deleted file mode 100644 index 1b767e46225..00000000000 --- a/jdk/test/java/lang/management/ThreadMXBean/ThreadStateTest.java +++ /dev/null @@ -1,424 +0,0 @@ -/* - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @bug 4967283 5080203 - * @summary Basic unit test of thread states returned by - * ThreadMXBean.getThreadInfo.getThreadState(). - * It also tests lock information returned by ThreadInfo. - * - * @author Mandy Chung - * - * @build ThreadExecutionSynchronizer Utils - * @run main ThreadStateTest - */ - -import java.lang.management.ManagementFactory; -import java.lang.management.ThreadMXBean; -import java.lang.management.ThreadInfo; - -import java.util.concurrent.locks.LockSupport; - -public class ThreadStateTest { - private static final ThreadMXBean tm = ManagementFactory.getThreadMXBean(); - - static class Lock { - private String name; - Lock(String name) { - this.name = name; - } - public String toString() { - return name; - } - } - private static Lock globalLock = new Lock("my lock"); - - public static void main(String[] argv) { - // Force thread state initialization now before the test - // verification begins. - Thread.currentThread().getState(); - - MyThread myThread = new MyThread("MyThread"); - - // before myThread starts - // Utils.checkThreadState(myThread, Thread.State.NEW); - - myThread.start(); - myThread.waitUntilStarted(); - Utils.checkThreadState(myThread, Thread.State.RUNNABLE); - checkLockInfo(myThread, Thread.State.RUNNABLE, null, null); - - myThread.suspend(); - Utils.goSleep(10); - checkSuspendedThreadState(myThread, Thread.State.RUNNABLE); - myThread.resume(); - - synchronized (globalLock) { - myThread.goBlocked(); - Utils.checkThreadState(myThread, Thread.State.BLOCKED); - checkLockInfo(myThread, Thread.State.BLOCKED, - globalLock, Thread.currentThread()); - } - - myThread.goWaiting(); - Utils.checkThreadState(myThread, Thread.State.WAITING); - checkLockInfo(myThread, Thread.State.WAITING, - globalLock, null); - - myThread.goTimedWaiting(); - Utils.checkThreadState(myThread, Thread.State.TIMED_WAITING); - checkLockInfo(myThread, Thread.State.TIMED_WAITING, - globalLock, null); - - - - /* - *********** parkUntil seems not working - * ignore this park case for now. - - Bug ID : 5062095 - *********************************************** - myThread.goParked(); - Utils.checkThreadState(myThread, Thread.State.WAITING); - checkLockInfo(myThread, Thread.State.WAITING, null, null); - - myThread.goTimedParked(); - Utils.checkThreadState(myThread, Thread.State.TIMED_WAITING); - checkLockInfo(myThread, Thread.State.TIMED_WAITING, null, null); - - */ - - myThread.goSleeping(); - Utils.checkThreadState(myThread, Thread.State.TIMED_WAITING); - checkLockInfo(myThread, Thread.State.TIMED_WAITING, null, null); - - - myThread.terminate(); - // Utils.checkThreadState(myThread, ThreadState.TERMINATED); - - try { - myThread.join(); - } catch (InterruptedException e) { - e.printStackTrace(); - System.out.println("TEST FAILED: Unexpected exception."); - throw new RuntimeException(e); - } - System.out.println("Test passed."); - } - - private static void checkSuspendedThreadState(Thread t, Thread.State state) { - ThreadInfo info = tm.getThreadInfo(t.getId()); - if (info == null) { - throw new RuntimeException(t.getName() + - " expected to have ThreadInfo " + - " but got null."); - } - - if (info.getThreadState() != state) { - throw new RuntimeException(t.getName() + " expected to be in " + - state + " state but got " + info.getThreadState()); - } - - if (!info.isSuspended()) { - throw new RuntimeException(t.getName() + " expected to be suspended " + - " but isSuspended() returns " + info.isSuspended()); - } - Utils.checkThreadState(t, state); - } - - private static String getLockName(Object lock) { - if (lock == null) return null; - - return lock.getClass().getName() + '@' + - Integer.toHexString(System.identityHashCode(lock)); - } - - private static void checkLockInfo(Thread t, Thread.State state, Object lock, Thread owner) { - ThreadInfo info = tm.getThreadInfo(t.getId()); - if (info == null) { - throw new RuntimeException(t.getName() + - " expected to have ThreadInfo " + - " but got null."); - } - - if (info.getThreadState() != state) { - throw new RuntimeException(t.getName() + " expected to be in " + - state + " state but got " + info.getThreadState()); - } - - if (lock == null && info.getLockName() != null) { - throw new RuntimeException(t.getName() + - " expected not to be blocked on any lock" + - " but got " + info.getLockName()); - } - String expectedLockName = getLockName(lock); - if (lock != null && info.getLockName() == null) { - throw new RuntimeException(t.getName() + - " expected to be blocked on lock [" + expectedLockName + - "] but got null."); - } - - if (lock != null && !expectedLockName.equals(info.getLockName())) { - throw new RuntimeException(t.getName() + - " expected to be blocked on lock [" + expectedLockName + - "] but got [" + info.getLockName() + "]."); - } - - if (owner == null && info.getLockOwnerName() != null) { - throw new RuntimeException("Lock owner is expected " + - " to be null but got " + info.getLockOwnerName()); - } - - if (owner != null && info.getLockOwnerName() == null) { - throw new RuntimeException("Lock owner is expected to be " + - owner.getName() + - " but got null."); - } - if (owner != null && !info.getLockOwnerName().equals(owner.getName())) { - throw new RuntimeException("Lock owner is expected to be " + - owner.getName() + - " but got " + owner.getName()); - } - if (owner == null && info.getLockOwnerId() != -1) { - throw new RuntimeException("Lock owner is expected " + - " to be -1 but got " + info.getLockOwnerId()); - } - - if (owner != null && info.getLockOwnerId() <= 0) { - throw new RuntimeException("Lock owner is expected to be " + - owner.getName() + "(id = " + owner.getId() + - ") but got " + info.getLockOwnerId()); - } - if (owner != null && info.getLockOwnerId() != owner.getId()) { - throw new RuntimeException("Lock owner is expected to be " + - owner.getName() + "(id = " + owner.getId() + - ") but got " + info.getLockOwnerId()); - } - if (info.isSuspended()) { - throw new RuntimeException(t.getName() + - " isSuspended() returns " + info.isSuspended()); - } - } - - static class MyThread extends Thread { - private ThreadExecutionSynchronizer thrsync = new ThreadExecutionSynchronizer(); - - MyThread(String name) { - super(name); - } - - private final int RUNNABLE = 0; - private final int BLOCKED = 1; - private final int WAITING = 2; - private final int TIMED_WAITING = 3; - private final int PARKED = 4; - private final int TIMED_PARKED = 5; - private final int SLEEPING = 6; - private final int TERMINATE = 7; - private int state = RUNNABLE; - - private boolean done = false; - public void run() { - // Signal main thread to continue. - thrsync.signal(); - while (!done) { - switch (state) { - case RUNNABLE: { - double sum = 0; - for (int i = 0; i < 1000; i++) { - double r = Math.random(); - double x = Math.pow(3, r); - sum += x - r; - } - break; - } - case BLOCKED: { - // signal main thread. - thrsync.signal(); - System.out.println(" myThread is going to block."); - synchronized (globalLock) { - // finish blocking - state = RUNNABLE; - } - break; - } - case WAITING: { - synchronized (globalLock) { - // signal main thread. - thrsync.signal(); - System.out.println(" myThread is going to wait."); - try { - globalLock.wait(); - } catch (InterruptedException e) { - // ignore - } - } - break; - } - case TIMED_WAITING: { - synchronized (globalLock) { - // signal main thread. - thrsync.signal(); - System.out.println(" myThread is going to timed wait."); - try { - globalLock.wait(10000); - } catch (InterruptedException e) { - // ignore - } - } - break; - } - case PARKED: { - // signal main thread. - thrsync.signal(); - System.out.println(" myThread is going to park."); - LockSupport.park(); - // give a chance for the main thread to block - System.out.println(" myThread is going to park."); - Utils.goSleep(10); - break; - } - case TIMED_PARKED: { - // signal main thread. - thrsync.signal(); - System.out.println(" myThread is going to timed park."); - long deadline = System.currentTimeMillis() + 10000*1000; - LockSupport.parkUntil(deadline); - - // give a chance for the main thread to block - Utils.goSleep(10); - break; - } - case SLEEPING: { - // signal main thread. - thrsync.signal(); - System.out.println(" myThread is going to sleep."); - try { - Thread.sleep(1000000); - } catch (InterruptedException e) { - // finish sleeping - interrupted(); - } - break; - } - case TERMINATE: { - done = true; - // signal main thread. - thrsync.signal(); - break; - } - default: - break; - } - } - } - public void waitUntilStarted() { - // wait for MyThread. - thrsync.waitForSignal(); - Utils.goSleep(10); - } - - public void goBlocked() { - System.out.println("Waiting myThread to go blocked."); - setState(BLOCKED); - // wait for MyThread to get blocked - thrsync.waitForSignal(); - Utils.goSleep(20); - } - - public void goWaiting() { - System.out.println("Waiting myThread to go waiting."); - setState(WAITING); - // wait for MyThread to wait on object. - thrsync.waitForSignal(); - Utils.goSleep(20); - } - public void goTimedWaiting() { - System.out.println("Waiting myThread to go timed waiting."); - setState(TIMED_WAITING); - // wait for MyThread timed wait call. - thrsync.waitForSignal(); - Utils.goSleep(20); - } - public void goParked() { - System.out.println("Waiting myThread to go parked."); - setState(PARKED); - // wait for MyThread state change to PARKED. - thrsync.waitForSignal(); - Utils.goSleep(20); - } - public void goTimedParked() { - System.out.println("Waiting myThread to go timed parked."); - setState(TIMED_PARKED); - // wait for MyThread. - thrsync.waitForSignal(); - Utils.goSleep(20); - } - - public void goSleeping() { - System.out.println("Waiting myThread to go sleeping."); - setState(SLEEPING); - // wait for MyThread. - thrsync.waitForSignal(); - Utils.goSleep(20); - } - public void terminate() { - System.out.println("Waiting myThread to terminate."); - setState(TERMINATE); - // wait for MyThread. - thrsync.waitForSignal(); - Utils.goSleep(20); - } - - private void setState(int newState) { - switch (state) { - case BLOCKED: - while (state == BLOCKED) { - Utils.goSleep(20); - } - state = newState; - break; - case WAITING: - case TIMED_WAITING: - state = newState; - synchronized (globalLock) { - globalLock.notify(); - } - break; - case PARKED: - case TIMED_PARKED: - state = newState; - LockSupport.unpark(this); - break; - case SLEEPING: - state = newState; - this.interrupt(); - break; - default: - state = newState; - break; - } - } - } -} From 4f0480aaeb20f7a776917008275972f03014d5eb Mon Sep 17 00:00:00 2001 From: Mike Duigou Date: Tue, 5 Nov 2013 19:44:41 -0800 Subject: [PATCH 025/145] 8021309: replace test/Makefile jdk_* targets with jtreg groups 8015068: Use jtreg -exclude for handling problemList.txt exclusions Reviewed-by: jjg, smarks, chegar, alanb, dholmes --- jdk/.hgignore | 1 + jdk/test/Makefile | 471 ++++++---------------------------------------- 2 files changed, 63 insertions(+), 409 deletions(-) diff --git a/jdk/.hgignore b/jdk/.hgignore index e849b9e6d1f..d8754b13e1f 100644 --- a/jdk/.hgignore +++ b/jdk/.hgignore @@ -1,5 +1,6 @@ ^build/ ^dist/ +^testoutput/ /nbproject/private/ ^make/netbeans/.*/build/ ^make/netbeans/.*/dist/ diff --git a/jdk/test/Makefile b/jdk/test/Makefile index c4a9b93bec6..9a9092df16b 100644 --- a/jdk/test/Makefile +++ b/jdk/test/Makefile @@ -27,6 +27,8 @@ # Makefile to run various jdk tests # +.DEFAULT : all + # Empty these to get rid of some default rules .SUFFIXES: .SUFFIXES: .java @@ -55,150 +57,19 @@ UNIQ = uniq WC = wc ZIP = zip -# Get OS name from uname -UNAME_S := $(shell $(UNAME) -s) +# Get OS name from uname (Cygwin inexplicably adds _NT-5.1) +UNAME_S := $(shell $(UNAME) -s | $(CUT) -f1 -d_) # Commands to run on paths to make mixed paths for java on windows -GETMIXEDPATH=$(ECHO) - -# Location of developer shared files -SLASH_JAVA = /java - -# Platform specific settings -ifeq ($(UNAME_S), SunOS) - OS_NAME = solaris - OS_ARCH := $(shell $(UNAME) -p) - OS_VERSION := $(shell $(UNAME) -r) -endif -ifeq ($(UNAME_S), Linux) - OS_NAME = linux - OS_ARCH := $(shell $(UNAME) -m) - # Check for unknown arch, try uname -p if uname -m says unknown - ifeq ($(OS_ARCH),unknown) - OS_ARCH := $(shell $(UNAME) -p) - endif - OS_VERSION := $(shell $(UNAME) -r) -endif -ifeq ($(UNAME_S), Darwin) - OS_NAME = macosx - OS_ARCH := $(shell $(UNAME) -m) - # Check for unknown arch, try uname -p if uname -m says unknown - ifeq ($(OS_ARCH),unknown) - OS_ARCH := $(shell $(UNAME) -p) - endif - OS_VERSION := $(shell $(UNAME) -r) -endif -ifeq ($(OS_NAME),) - OS_NAME = windows - # GNU Make or MKS overrides $(PROCESSOR_ARCHITECTURE) to always - # return "x86". Use the first word of $(PROCESSOR_IDENTIFIER) instead. - ifeq ($(PROCESSOR_IDENTIFIER),) - PROC_ARCH:=$(shell $(UNAME) -m) - else - PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER)) - endif - OS_ARCH:=$(PROC_ARCH) +ifeq ($(UNAME_S), CYGWIN) + # Location of developer shared files SLASH_JAVA = J: - EXESUFFIX = .exe - # These need to be different depending on MKS or CYGWIN - ifeq ($(findstring cygdrive,$(shell ($(CD) C:/ && $(PWD)))), ) - GETMIXEDPATH = dosname -s - OS_VERSION := $(shell $(UNAME) -r) - else - GETMIXEDPATH = cygpath -m -s - OS_VERSION := $(shell $(UNAME) -s | $(CUT) -d'-' -f2) - endif -endif - -# Only want major and minor numbers from os version -OS_VERSION := $(shell $(ECHO) "$(OS_VERSION)" | $(CUT) -d'.' -f1,2) - -# Name to use for x86_64 arch (historically amd64, but should change someday) -OS_ARCH_X64_NAME:=amd64 -#OS_ARCH_X64_NAME:=x64 - -# Alternate arch names (in case this arch is known by a second name) -# PROBLEM_LISTS may use either name. -OS_ARCH2-amd64:=x64 -#OS_ARCH2-x64:=amd64 - -# Try and use the arch names consistently -OS_ARCH:=$(patsubst x64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst X64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst AMD64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst amd64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst x86_64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst 8664,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst EM64T,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst em64t,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst Intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst INTEL64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(patsubst IA64,ia64,$(OS_ARCH)) -OS_ARCH:=$(patsubst X86,i586,$(OS_ARCH)) -OS_ARCH:=$(patsubst x86,i586,$(OS_ARCH)) -OS_ARCH:=$(patsubst i386,i586,$(OS_ARCH)) -OS_ARCH:=$(patsubst i486,i586,$(OS_ARCH)) -OS_ARCH:=$(patsubst i686,i586,$(OS_ARCH)) -OS_ARCH:=$(patsubst 386,i586,$(OS_ARCH)) -OS_ARCH:=$(patsubst 486,i586,$(OS_ARCH)) -OS_ARCH:=$(patsubst 586,i586,$(OS_ARCH)) -OS_ARCH:=$(patsubst 686,i586,$(OS_ARCH)) - -# Default ARCH_DATA_MODEL settings -ARCH_DATA_MODEL-i586 = 32 -ARCH_DATA_MODEL-$(OS_ARCH_X64_NAME) = 64 -ARCH_DATA_MODEL-ia64 = 64 -ARCH_DATA_MODEL-sparc = 32 -ARCH_DATA_MODEL-sparcv9 = 64 - -# If ARCH_DATA_MODEL is not defined, try and pick a reasonable default -ifndef ARCH_DATA_MODEL - ARCH_DATA_MODEL:=$(ARCH_DATA_MODEL-$(OS_ARCH)) -endif -ifndef ARCH_DATA_MODEL - ARCH_DATA_MODEL=32 -endif - -# Platform directory name -PLATFORM_OS = $(OS_NAME)-$(OS_ARCH) - -# Check ARCH_DATA_MODEL, adjust OS_ARCH accordingly on solaris -ARCH_DATA_MODEL_ERROR= \ - ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) cannot be used with $(PLATFORM_OS) -ifeq ($(ARCH_DATA_MODEL),64) - ifeq ($(PLATFORM_OS),solaris-i586) - OS_ARCH=$(OS_ARCH_X64_NAME) - endif - ifeq ($(PLATFORM_OS),solaris-sparc) - OS_ARCH=sparcv9 - endif - ifeq ($(OS_ARCH),i586) - x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)") - endif - ifeq ($(OS_ARCH),sparc) - x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)") - endif + GETMIXEDPATH = cygpath -m -s else - ifeq ($(ARCH_DATA_MODEL),32) - ifeq ($(OS_ARCH),$(OS_ARCH_X64_NAME)) - x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)") - endif - ifeq ($(OS_ARCH),ia64) - x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)") - endif - ifeq ($(OS_ARCH),sparcv9) - x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)") - endif - else - x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)") - endif -endif + # Location of developer shared files + SLASH_JAVA = /java -# Alternate OS_ARCH name (defaults to OS_ARCH) -OS_ARCH2:=$(OS_ARCH2-$(OS_ARCH)) -ifeq ($(OS_ARCH2),) - OS_ARCH2:=$(OS_ARCH) + GETMIXEDPATH=$(ECHO) endif # Root of this test area (important to use full paths in some places) @@ -206,17 +77,18 @@ TEST_ROOT := $(shell $(PWD)) # Root of all test results ifdef ALT_OUTPUTDIR - ABS_OUTPUTDIR = $(ALT_OUTPUTDIR) + ABS_OUTPUTDIR = $(shell $(CD) $(ALT_OUTPUTDIR) && $(PWD)) else - ABS_OUTPUTDIR = $(TEST_ROOT)/../build/$(PLATFORM_OS) + ABS_OUTPUTDIR = $(shell $(CD) $(TEST_ROOT)/.. && $(PWD)) endif + ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR) ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR) # Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test) ifndef PRODUCT_HOME # Try to use j2sdk-image if it exists - ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/j2sdk-image + ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/images/j2sdk-image PRODUCT_HOME := \ $(shell \ if [ -d $(ABS_JDK_IMAGE) ] ; then \ @@ -240,30 +112,11 @@ ifdef JPRT_PRODUCT_VM_ARGS JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS) endif -# Check JAVA_ARGS arguments based on ARCH_DATA_MODEL etc. -ifeq ($(OS_NAME),solaris) - D64_ERROR_MESSAGE=Mismatch between ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) and use of -d64 in JAVA_ARGS=$(JAVA_ARGS) - ifeq ($(ARCH_DATA_MODEL),32) - ifneq ($(findstring -d64,$(JAVA_ARGS)),) - x:=$(warning "WARNING: $(D64_ERROR_MESSAGE)") - endif - endif - ifeq ($(ARCH_DATA_MODEL),64) - ifeq ($(findstring -d64,$(JAVA_ARGS)),) - x:=$(warning "WARNING: $(D64_ERROR_MESSAGE)") - endif - endif -endif - -# Macro to run make and set the shared library permissions -define SharedLibraryPermissions -$(MAKE) SHARED_LIBRARY_DIR=$1 UNIQUE_DIR=$@ shared_library_permissions -endef - # Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results) -ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip ifdef JPRT_ARCHIVE_BUNDLE ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE) +else + ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip endif # How to create the test bundle (pass or fail, we want to create this) @@ -272,13 +125,15 @@ ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \ && $(CD) $(ABS_TEST_OUTPUT_DIR) \ && $(CHMOD) -R a+r . \ && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . ) -SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport/text/summary.txt + +# important results files +SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport/text/summary.txt") STATS_TXT_NAME = Stats.txt -STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/$(STATS_TXT_NAME) -RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/runlist.txt -PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/passlist.txt -FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/faillist.txt -EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/exitcode.txt +STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/$(STATS_TXT_NAME)") +RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/runlist.txt") +PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/passlist.txt") +FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/faillist.txt") +EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/exitcode.txt") TESTEXIT = \ if [ ! -s $(EXITCODE) ] ; then \ @@ -316,8 +171,8 @@ BUNDLE_UP_AND_EXIT = \ runc="`$(CAT) $(RUNLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \ passc="`$(CAT) $(PASSLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \ failc="`$(CAT) $(FAILLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \ - exclc="`$(CAT) $(EXCLUDELIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \ - $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc} excluded=$${exclc}" \ + exclc="FIXME CODETOOLS-7900176"; \ + $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc}" \ >> $(STATS_TXT); \ else \ $(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \ @@ -336,9 +191,24 @@ all: jdk_default @$(ECHO) "Testing completed successfully" # Prep for output +# Change execute permissions on shared library files. +# Files in repositories should never have execute permissions, but +# there are some tests that have pre-built shared libraries, and these +# windows dll files must have execute permission. Adding execute +# permission may happen automatically on windows when using certain +# versions of mercurial but it cannot be guaranteed. And blindly +# adding execute permission might be seen as a mercurial 'change', so +# we avoid adding execute permission to repository files. But testing +# from a plain source tree needs the chmod a+rx. Applying the chmod to +# all shared libraries not just dll files. And with CYGWIN and sshd +# service, you may need CYGWIN=ntsec for this to work. prep: @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR) @$(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` + @if [ ! -d $(TEST_ROOT)/../.hg ] ; then \ + $(FIND) $(TEST_ROOT) \( -name \*.dll -o -name \*.DLL -o -name \*.so \) \ + -exec $(CHMOD) a+rx {} \; ; \ + fi # Cleanup clean: @@ -357,50 +227,21 @@ ifndef JT_HOME endif endif -# Expect JPRT to set TESTDIRS to the jtreg test dirs -ifndef TESTDIRS - TESTDIRS = demo -endif - -# Some tests annoy me and fail frequently -PROBLEM_LIST=ProblemList.txt -PROBLEM_LISTS=$(PROBLEM_LIST) $(wildcard closed/$(PROBLEM_LIST)) -EXCLUDELIST=$(ABS_TEST_OUTPUT_DIR)/excludelist.txt +# Problematic tests to be excluded +PROBLEM_LISTS=$(call MixedDirs,$(wildcard ProblemList.txt closed/ProblemList.txt)) # Create exclude list for this platform and arch ifdef NO_EXCLUDES -$(EXCLUDELIST): $(PROBLEM_LISTS) $(TEST_DEPENDENCIES) - @$(ECHO) "NOTHING_EXCLUDED" > $@ + JTREG_EXCLUSIONS = else -$(EXCLUDELIST): $(PROBLEM_LISTS) $(TEST_DEPENDENCIES) - @$(RM) $@ $@.temp1 $@.temp2 - @(($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-all' ) ;\ - ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(PLATFORM_OS)' ) ;\ - ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_ARCH2)' ) ;\ - ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_VERSION)') ;\ - ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH)' ) ;\ - ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH2)' ) ;\ - ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-all' ) ;\ - ($(ECHO) "#") ;\ - ) | $(SED) -e 's@^[\ ]*@@' \ - | $(EGREP) -v '^#' > $@.temp1 - @for tdir in $(TESTDIRS) SOLARIS_10_SH_BUG_NO_EMPTY_FORS ; do \ - ( ( $(CAT) $@.temp1 | $(EGREP) "^$${tdir}" ) ; $(ECHO) "#" ) >> $@.temp2 ; \ - done - @$(ECHO) "# at least one line" >> $@.temp2 - @( $(EGREP) -v '^#' $@.temp2 ; true ) > $@ - @$(ECHO) "Excluding list contains `$(EXPAND) $@ | $(WC) -l` items" + JTREG_EXCLUSIONS = $(PROBLEM_LISTS:%=-exclude:%) endif -# Select list of directories that exist -define TestDirs -$(foreach i,$1,$(wildcard ${i})) $(foreach i,$1,$(wildcard closed/${i})) -endef -# Running batches of tests with or without agentvm -define RunBatch -$(ECHO) "Running tests: $?" -$(MAKE) TEST_DEPENDENCIES="$?" TESTDIRS="$?" UNIQUE_DIR=$@ jtreg_tests +# convert list of directories to dos paths +define MixedDirs +$(foreach i,$1,$(shell $(GETMIXEDPATH) "${i}")) endef + define SummaryInfo $(ECHO) "########################################################" $(CAT) $(?:%=$(ABS_TEST_OUTPUT_DIR)/%/$(STATS_TXT_NAME)) @@ -409,178 +250,11 @@ endef # ------------------------------------------------------------------ -# Batches of tests (somewhat arbitrary assigments to jdk_* targets) -# NOTE: These *do not* run the same tests as make/jprt.properties -JDK_DEFAULT_TARGETS = -JDK_ALL_TARGETS = - -JDK_ALL_TARGETS += jdk_awt -jdk_awt: $(call TestDirs, com/sun/awt java/awt sun/awt \ - javax/imageio javax/print sun/pisces) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_beans1 -JDK_DEFAULT_TARGETS += jdk_beans1 -jdk_beans1: $(call TestDirs, \ - java/beans/beancontext java/beans/PropertyChangeSupport \ - java/beans/Introspector java/beans/Performance \ - java/beans/VetoableChangeSupport java/beans/Statement) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_beans2 -jdk_beans2: $(call TestDirs, \ - java/beans/Beans java/beans/EventHandler java/beans/XMLDecoder \ - java/beans/PropertyEditor) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_beans3 -jdk_beans3: $(call TestDirs, java/beans/XMLEncoder) - $(call RunBatch) - -# All beans tests -jdk_beans: jdk_beans1 jdk_beans2 jdk_beans3 - @$(SummaryInfo) - -JDK_ALL_TARGETS += jdk_io -JDK_DEFAULT_TARGETS += jdk_io -jdk_io: $(call TestDirs, java/io) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_lang -JDK_DEFAULT_TARGETS += jdk_lang -jdk_lang: $(call TestDirs, java/lang sun/invoke sun/misc sun/reflect vm) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_jmx -jdk_jmx: $(call TestDirs, javax/management com/sun/jmx) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_management -jdk_management: $(call TestDirs, com/sun/management sun/management) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_math -JDK_DEFAULT_TARGETS += jdk_math -jdk_math: $(call TestDirs, java/math) - $(call RunBatch) - -JDK_DEFAULT_TARGETS += jdk_time -jdk_time: $(call TestDirs, java/time) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_other -JDK_DEFAULT_TARGETS += jdk_other -jdk_other: $(call TestDirs, \ - demo/jvmti demo/zipfs sample \ - javax/naming com/sun/jndi \ - javax/script \ - java/sql javax/sql \ - javax/smartcardio \ - javax/xml/jaxp \ - javax/xml/soap \ - javax/xml/ws com/sun/internal/ws com/sun/org/glassfish \ - jdk/asm \ - jdk/lambda \ - com/sun/org/apache/xerces \ - com/sun/corba \ - com/sun/tracing \ - sun/usagetracker \ - misc) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_net -JDK_DEFAULT_TARGETS += jdk_net -jdk_net: $(call TestDirs, com/sun/net java/net sun/net com/oracle/net) - $(call RunBatch) - -jdk_nio: $(call TestDirs, java/nio sun/nio com/oracle/nio) - $(call SharedLibraryPermissions,java/nio/channels) - $(call RunBatch) - -jdk_sctp: $(call TestDirs, com/sun/nio/sctp) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_rmi -jdk_rmi: $(call TestDirs, java/rmi sun/rmi javax/rmi/ssl) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_security1 -JDK_DEFAULT_TARGETS += jdk_security1 -jdk_security1: $(call TestDirs, java/security) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_security2 -jdk_security2: $(call TestDirs, javax/crypto javax/xml/crypto com/sun/crypto) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_security3 -jdk_security3: $(call TestDirs, com/sun/security lib/security javax/security \ - sun/security com/sun/org/apache/xml/internal/security \ - com/oracle/security) - $(call SharedLibraryPermissions,sun/security) - $(call RunBatch) - -# All security tests -jdk_security: jdk_security1 jdk_security2 jdk_security3 - @$(SummaryInfo) - -JDK_ALL_TARGETS += jdk_sound -jdk_sound: $(call TestDirs, javax/sound) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_swing -jdk_swing: $(call TestDirs, javax/swing sun/java2d \ - demo/jfc com/sun/java/swing) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_text -JDK_DEFAULT_TARGETS += jdk_text -jdk_text: $(call TestDirs, java/text sun/text) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_jdi -jdk_jdi: $(call TestDirs, com/sun/jdi) - $(call RunBatch) - -JDK_ALL_TARGETS += jdk_tools -jdk_tools: $(call TestDirs, com/sun/tools sun/jvmstat sun/tools tools) - $(call SharedLibraryPermissions,tools/launcher) - $(call RunBatch) - -ifdef OPENJDK -jdk_jfr: -else -JDK_ALL_TARGETS += jdk_jfr -jdk_jfr: $(call TestDirs, com/oracle/jfr) - $(call RunBatch) -endif - -JDK_ALL_TARGETS += jdk_util -JDK_DEFAULT_TARGETS += jdk_util -jdk_util: $(call TestDirs, java/util sun/util) - $(call RunBatch) - -# ------------------------------------------------------------------ - -# Run default tests -# note that this *does not* have the same meaning as jprt.properties :: jprt.make.rule.default.test.targets -jdk_default: $(JDK_DEFAULT_TARGETS) - @$(SummaryInfo) - -# Run core tests -# please keep this in sync with jdk/make/jprt.properties :: jprt.make.rule.core.test.targets -jdk_core: jdk_lang jdk_math jdk_util jdk_io jdk_net jdk_nio \ - jdk_security1 jdk_security2 jdk_security3 jdk_rmi \ - jdk_management jdk_jmx jdk_text jdk_tools jdk_jfr jdk_other - @$(SummaryInfo) - -# Run all tests -# note that this *does not* have the same meaning as jprt.properties :: jprt.make.rule.all.test.targets -jdk_all: $(JDK_ALL_TARGETS) - @$(SummaryInfo) - -# These are all phony targets -PHONY_LIST += $(JDK_ALL_TARGETS) jdk_default jdk_core jdk_all +jdk_%: + $(ECHO) "Running tests: $@" + for each in $@; do \ + $(MAKE) -j 1 TEST_SELECTION=":$$each" UNIQUE_DIR=$$each jtreg_tests; \ + done # ------------------------------------------------------------------ @@ -625,44 +299,23 @@ JTREG_TEST_OPTIONS += $(JTREG_TESTVM_MEMORY_OPTION) $(JTREG): $(JT_HOME) # Run jtreg -jtreg_tests: prep $(PRODUCT_HOME) $(JTREG) $(EXCLUDELIST) - @$(EXPAND) $(EXCLUDELIST) \ - | $(CUT) -d' ' -f1 \ - | $(SED) -e 's@^@Excluding: @' +jtreg_tests: prep $(PRODUCT_HOME) $(JTREG) ( \ ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \ export JT_HOME; \ $(shell $(GETMIXEDPATH) "$(JTREG)") \ $(JTREG_BASIC_OPTIONS) \ - -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport \ - -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork \ + -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport") \ + -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTwork") \ -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \ - -exclude:$(shell $(GETMIXEDPATH) "$(EXCLUDELIST)") \ + $(JTREG_EXCLUSIONS) \ $(JTREG_TEST_OPTIONS) \ - $(TESTDIRS) \ - ) ; $(BUNDLE_UP_AND_EXIT) \ + $(TEST_SELECTION) \ + ) ; \ + $(BUNDLE_UP_AND_EXIT) \ ) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT) -# Rule that may change execute permissions on shared library files. -# Files in repositories should never have execute permissions, but there -# are some tests that have pre-built shared libraries, and these windows -# dll files must have execute permission. Adding execute permission -# may happen automatically on windows when using certain versions of mercurial -# but it cannot be guaranteed. And blindly adding execute permission might -# be seen as a mercurial 'change', so we avoid adding execute permission to -# repository files. But testing from a plain source tree needs the chmod a+rx. -# Used on select directories and applying the chmod to all shared libraries -# not just dll files. On windows, this may not work with MKS if the files -# were installed with CYGWIN unzip or untar (MKS chmod may not do anything). -# And with CYGWIN and sshd service, you may need CYGWIN=ntsec for this to work. -# -shared_library_permissions: $(SHARED_LIBRARY_DIR) - if [ ! -d $(TEST_ROOT)/../.hg ] ; then \ - $(FIND) $< \( -name \*.dll -o -name \*.DLL -o -name \*.so \) \ - -exec $(CHMOD) a+rx {} \; ; \ - fi - -PHONY_LIST += jtreg_tests shared_library_permissions +PHONY_LIST += jtreg_tests ################################################################ From 5eb7e21cc91150c46e0c890d2422c0951166f41f Mon Sep 17 00:00:00 2001 From: Anthony Juckel Date: Wed, 6 Nov 2013 13:25:24 -0800 Subject: [PATCH 026/145] 8025698: (fs) Typo in exception thrown by encode() in UnixPath.java Reviewed-by: dxu, mduigou, henryjen, weijun --- jdk/src/solaris/classes/sun/nio/fs/UnixPath.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java b/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java index aa04538cb20..1142b4c775b 100644 --- a/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java +++ b/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java @@ -145,7 +145,7 @@ class UnixPath } if (error) { throw new InvalidPathException(input, - "Malformed input or input contains unmappable chacraters"); + "Malformed input or input contains unmappable characters"); } // trim result to actual length if required From 23d71ee6eed0f727935ad51f8b150e185c293cb7 Mon Sep 17 00:00:00 2001 From: Eric Bruneton Date: Wed, 6 Nov 2013 11:22:15 -0800 Subject: [PATCH 027/145] 8027227: [asm] generate CONSTANT_InterfaceMethodref for invoke{special/static) of non-abstract methods on ifaces Co-authored-by: Remi Forax Co-authored-by: John Rose Co-authored-by: Paul Sandoz Reviewed-by: ksrini, lagergren --- .../org/objectweb/asm/ByteVector.java | 8 +- .../org/objectweb/asm/ClassReader.java | 23 ++--- .../org/objectweb/asm/ClassWriter.java | 23 ++++- .../internal/org/objectweb/asm/Handle.java | 13 ++- .../org/objectweb/asm/MethodVisitor.java | 65 +++++++++--- .../org/objectweb/asm/MethodWriter.java | 98 +++++++++++++++---- .../objectweb/asm/commons/AdviceAdapter.java | 23 ++++- .../asm/commons/AnalyzerAdapter.java | 28 +++++- .../asm/commons/CodeSizeEvaluator.java | 23 ++++- .../asm/commons/GeneratorAdapter.java | 17 ++-- .../asm/commons/InstructionAdapter.java | 94 ++++++++++++++++-- .../asm/commons/JSRInlinerAdapter.java | 16 +++ .../asm/commons/LocalVariablesSorter.java | 6 ++ .../asm/commons/RemappingMethodAdapter.java | 39 +++++++- .../commons/RemappingSignatureAdapter.java | 6 +- .../asm/commons/SerialVersionUIDAdder.java | 9 +- .../asm/commons/StaticInitMerger.java | 3 +- .../asm/commons/TryCatchBlockSorter.java | 1 - .../objectweb/asm/tree/AnnotationNode.java | 5 + .../org/objectweb/asm/tree/ClassNode.java | 6 ++ .../org/objectweb/asm/tree/FieldNode.java | 8 +- .../objectweb/asm/tree/MethodInsnNode.java | 35 ++++++- .../org/objectweb/asm/tree/MethodNode.java | 38 ++++++- .../asm/tree/TypeAnnotationNode.java | 5 + .../objectweb/asm/tree/analysis/Frame.java | 9 ++ .../org/objectweb/asm/util/ASMifier.java | 41 +++++++- .../objectweb/asm/util/CheckClassAdapter.java | 17 +++- .../objectweb/asm/util/CheckFieldAdapter.java | 5 + .../asm/util/CheckMethodAdapter.java | 71 +++++++++++--- .../org/objectweb/asm/util/Printer.java | 29 +++++- .../org/objectweb/asm/util/Textifier.java | 28 ++++++ .../asm/util/TraceMethodVisitor.java | 26 ++++- .../internal/org/objectweb/asm/version.txt | 12 +-- 33 files changed, 711 insertions(+), 119 deletions(-) diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ByteVector.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ByteVector.java index 0d3472bcac1..89eb6d4b640 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ByteVector.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ByteVector.java @@ -233,11 +233,14 @@ public class ByteVector { * automatically enlarged if necessary. * * @param s - * a String. + * a String whose UTF8 encoded length must be less than 65536. * @return this byte vector. */ public ByteVector putUTF8(final String s) { int charLength = s.length(); + if (charLength > 65535) { + throw new IllegalArgumentException(); + } int len = length; if (len + 2 + charLength > data.length) { enlarge(2 + charLength); @@ -267,6 +270,9 @@ public class ByteVector { byteLength += 2; } } + if (byteLength > 65535) { + throw new IllegalArgumentException(); + } data[length] = (byte) (byteLength >>> 8); data[length + 1] = (byte) byteLength; if (length + 2 + byteLength > data.length) { diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassReader.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassReader.java index 8cbc2d2c199..4f842157ac3 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassReader.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassReader.java @@ -1266,7 +1266,7 @@ public class ClassReader { u += 2; // generates the first (implicit) stack map frame - if (FRAMES && (stackMap != 0 || unzip)) { + if (FRAMES && stackMap != 0) { /* * for the first explicit frame the offset is not offset_delta + 1 * but only offset_delta; setting the implicit frame offset to -1 @@ -1283,8 +1283,6 @@ public class ClassReader { if (unzip) { getImplicitFrame(context); } - } - if (FRAMES && stackMap != 0) { /* * Finds labels for UNINITIALIZED frame types. Instead of decoding * each element of the stack map table, we look for 3 consecutive @@ -1322,17 +1320,19 @@ public class ClassReader { } } - // visits the frame(s) for this offset, if any + // visits the frame for this offset, if any while (FRAMES && frame != null && (frame.offset == offset || frame.offset == -1)) { // if there is a frame for this offset, makes the visitor visit // it, and reads the next frame if there is one. - if (!zip || unzip) { - mv.visitFrame(Opcodes.F_NEW, frame.localCount, frame.local, - frame.stackCount, frame.stack); - } else if (frame.offset != -1) { - mv.visitFrame(frame.mode, frame.localDiff, frame.local, - frame.stackCount, frame.stack); + if (frame.offset != -1) { + if (!zip || unzip) { + mv.visitFrame(Opcodes.F_NEW, frame.localCount, + frame.local, frame.stackCount, frame.stack); + } else { + mv.visitFrame(frame.mode, frame.localDiff, frame.local, + frame.stackCount, frame.stack); + } } if (frameCount > 0) { stackMap = readFrame(stackMap, zip, unzip, frame); @@ -1434,6 +1434,7 @@ public class ClassReader { case ClassWriter.FIELDORMETH_INSN: case ClassWriter.ITFMETH_INSN: { int cpIndex = items[readUnsignedShort(u + 1)]; + boolean itf = b[cpIndex - 1] == ClassWriter.IMETH; String iowner = readClass(cpIndex, c); cpIndex = items[readUnsignedShort(cpIndex + 2)]; String iname = readUTF8(cpIndex, c); @@ -1441,7 +1442,7 @@ public class ClassReader { if (opcode < Opcodes.INVOKEVIRTUAL) { mv.visitFieldInsn(opcode, iowner, iname, idesc); } else { - mv.visitMethodInsn(opcode, iowner, iname, idesc); + mv.visitMethodInsn(opcode, iowner, iname, idesc, itf); } if (opcode == Opcodes.INVOKEINTERFACE) { u += 5; diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassWriter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassWriter.java index d5d8fa48903..ab9dcd0dce4 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassWriter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassWriter.java @@ -516,12 +516,12 @@ public class ClassWriter extends ClassVisitor { * true if the maximum stack size and number of local variables * must be automatically computed. */ - private final boolean computeMaxs; + private boolean computeMaxs; /** * true if the stack map frames must be recomputed from scratch. */ - private final boolean computeFrames; + private boolean computeFrames; /** * true if the stack map tables of this class are invalid. The @@ -988,9 +988,22 @@ public class ClassWriter extends ClassVisitor { attrs.put(this, null, 0, -1, -1, out); } if (invalidFrames) { - ClassWriter cw = new ClassWriter(COMPUTE_FRAMES); - new ClassReader(out.data).accept(cw, ClassReader.SKIP_FRAMES); - return cw.toByteArray(); + anns = null; + ianns = null; + attrs = null; + innerClassesCount = 0; + innerClasses = null; + bootstrapMethodsCount = 0; + bootstrapMethods = null; + firstField = null; + lastField = null; + firstMethod = null; + lastMethod = null; + computeMaxs = false; + computeFrames = true; + invalidFrames = false; + new ClassReader(out.data).accept(this, ClassReader.SKIP_FRAMES); + return toByteArray(); } return out.data; } diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/Handle.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/Handle.java index f262f9a09a0..e8b2859b05d 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/Handle.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/Handle.java @@ -78,7 +78,8 @@ public final class Handle { final int tag; /** - * The internal name of the field or method designed by this handle. + * The internal name of the class that owns the field or method designated + * by this handle. */ final String owner; @@ -105,8 +106,8 @@ public final class Handle { * {@link Opcodes#H_NEWINVOKESPECIAL} or * {@link Opcodes#H_INVOKEINTERFACE}. * @param owner - * the internal name of the field or method designed by this - * handle. + * the internal name of the class that owns the field or method + * designated by this handle. * @param name * the name of the field or method designated by this handle. * @param desc @@ -135,9 +136,11 @@ public final class Handle { } /** - * Returns the internal name of the field or method designed by this handle. + * Returns the internal name of the class that owns the field or method + * designated by this handle. * - * @return the internal name of the field or method designed by this handle. + * @return the internal name of the class that owns the field or method + * designated by this handle. */ public String getOwner() { return owner; diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodVisitor.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodVisitor.java index f21519e962c..0bb1a05b805 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodVisitor.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodVisitor.java @@ -68,11 +68,11 @@ package jdk.internal.org.objectweb.asm; * visitTryCatchBlock | visitTryCatchBlockAnnotation | * visitLocalVariable | visitLocalVariableAnnotation | * visitLineNumber )* visitMaxs ] visitEnd. In - * addition, the visitXInsn and visitLabel - * methods must be called in the sequential order of the bytecode instructions - * of the visited code, visitInsnAnnotation must be called after - * the annotated instruction, visitTryCatchBlock must be called - * before the labels passed as arguments have been visited, + * addition, the visitXInsn and visitLabel methods must + * be called in the sequential order of the bytecode instructions of the visited + * code, visitInsnAnnotation must be called after the annotated + * instruction, visitTryCatchBlock must be called before the + * labels passed as arguments have been visited, * visitTryCatchBlockAnnotation must be called after the * corresponding try catch block has been visited, and the * visitLocalVariable, visitLocalVariableAnnotation and @@ -274,13 +274,9 @@ public abstract class MethodVisitor { * compressed form (all frames must use the same format, i.e. you must not * mix expanded and compressed frames within a single method): *

    + * + * + *
    + * In both cases the first frame, corresponding to the method's parameters + * and access flags, is implicit and must not be visited. Also, it is + * illegal to visit two or more frames for the same code location (i.e., at + * least one instruction must be visited between two calls to visitFrame). * * @param type * the type of this stack map frame. Must be @@ -466,13 +468,52 @@ public abstract class MethodVisitor { * @param desc * the method's descriptor (see {@link Type Type}). */ + @Deprecated public void visitMethodInsn(int opcode, String owner, String name, String desc) { + if (api >= Opcodes.ASM5) { + boolean itf = opcode == Opcodes.INVOKEINTERFACE; + visitMethodInsn(opcode, owner, name, desc, itf); + return; + } if (mv != null) { mv.visitMethodInsn(opcode, owner, name, desc); } } + /** + * Visits a method instruction. A method instruction is an instruction that + * invokes a method. + * + * @param opcode + * the opcode of the type instruction to be visited. This opcode + * is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or + * INVOKEINTERFACE. + * @param owner + * the internal name of the method's owner class (see + * {@link Type#getInternalName() getInternalName}). + * @param name + * the method's name. + * @param desc + * the method's descriptor (see {@link Type Type}). + * @param itf + * if the method's owner class is an interface. + */ + public void visitMethodInsn(int opcode, String owner, String name, + String desc, boolean itf) { + if (api < Opcodes.ASM5) { + if (itf != (opcode == Opcodes.INVOKEINTERFACE)) { + throw new IllegalArgumentException( + "INVOKESPECIAL/STATIC on interfaces require ASM 5"); + } + visitMethodInsn(opcode, owner, name, desc); + return; + } + if (mv != null) { + mv.visitMethodInsn(opcode, owner, name, desc, itf); + } + } + /** * Visits an invokedynamic instruction. * diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodWriter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodWriter.java index f59abfa7a3a..81a82804d6e 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodWriter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodWriter.java @@ -71,7 +71,7 @@ class MethodWriter extends MethodVisitor { /** * Pseudo access flag used to denote constructors. */ - static final int ACC_CONSTRUCTOR = 262144; + static final int ACC_CONSTRUCTOR = 0x80000; /** * Frame has exactly the same locals as the previous stack map frame and @@ -297,11 +297,6 @@ class MethodWriter extends MethodVisitor { */ private int[] previousFrame; - /** - * Index of the next element to be added in {@link #frame}. - */ - private int frameIndex; - /** * The current stack map frame. The first element contains the offset of the * instruction to which the frame corresponds, the second element is the @@ -496,6 +491,9 @@ class MethodWriter extends MethodVisitor { cw.lastMethod = this; this.cw = cw; this.access = access; + if ("".equals(name)) { + this.access |= ACC_CONSTRUCTOR; + } this.name = cw.newUTF8(name); this.desc = cw.newUTF8(desc); this.descriptor = desc; @@ -511,9 +509,6 @@ class MethodWriter extends MethodVisitor { } this.compute = computeFrames ? FRAMES : (computeMaxs ? MAXS : NOTHING); if (computeMaxs || computeFrames) { - if (computeFrames && "".equals(name)) { - this.access |= ACC_CONSTRUCTOR; - } // updates maxLocals int size = Type.getArgumentsAndReturnSizes(descriptor) >> 2; if ((access & Opcodes.ACC_STATIC) != 0) { @@ -649,8 +644,11 @@ class MethodWriter extends MethodVisitor { } if (type == Opcodes.F_NEW) { + if (previousFrame == null) { + visitImplicitFirstFrame(); + } currentLocals = nLocal; - startFrame(code.length, nLocal, nStack); + int frameIndex = startFrame(code.length, nLocal, nStack); for (int i = 0; i < nLocal; ++i) { if (local[i] instanceof String) { frame[frameIndex++] = Frame.OBJECT @@ -914,9 +912,8 @@ class MethodWriter extends MethodVisitor { @Override public void visitMethodInsn(final int opcode, final String owner, - final String name, final String desc) { + final String name, final String desc, final boolean itf) { lastCodeOffset = code.length; - boolean itf = opcode == Opcodes.INVOKEINTERFACE; Item i = cw.newMethodItem(owner, name, desc, itf); int argSize = i.intVal; // Label currentBlock = this.currentBlock; @@ -954,7 +951,7 @@ class MethodWriter extends MethodVisitor { } } // adds the instruction to the bytecode of the method - if (itf) { + if (opcode == Opcodes.INVOKEINTERFACE) { if (argSize == 0) { argSize = Type.getArgumentsAndReturnSizes(desc); i.intVal = argSize; @@ -1528,8 +1525,8 @@ class MethodWriter extends MethodVisitor { } code.data[end] = (byte) Opcodes.ATHROW; // emits a frame for this unreachable block - startFrame(start, 0, 1); - frame[frameIndex++] = Frame.OBJECT + int frameIndex = startFrame(start, 0, 1); + frame[frameIndex] = Frame.OBJECT | cw.addType("java/lang/Throwable"); endFrame(); // removes the start-end range from the exception @@ -1756,7 +1753,7 @@ class MethodWriter extends MethodVisitor { } } // visits the frame and its content - startFrame(f.owner.position, nLocal, nStack); + int frameIndex = startFrame(f.owner.position, nLocal, nStack); for (i = 0; nLocal > 0; ++i, --nLocal) { t = locals[i]; frame[frameIndex++] = t; @@ -1774,6 +1771,67 @@ class MethodWriter extends MethodVisitor { endFrame(); } + /** + * Visit the implicit first frame of this method. + */ + private void visitImplicitFirstFrame() { + // There can be at most descriptor.length() + 1 locals + int frameIndex = startFrame(0, descriptor.length() + 1, 0); + if ((access & Opcodes.ACC_STATIC) == 0) { + if ((access & ACC_CONSTRUCTOR) == 0) { + frame[frameIndex++] = Frame.OBJECT | cw.addType(cw.thisName); + } else { + frame[frameIndex++] = 6; // Opcodes.UNINITIALIZED_THIS; + } + } + int i = 1; + loop: while (true) { + int j = i; + switch (descriptor.charAt(i++)) { + case 'Z': + case 'C': + case 'B': + case 'S': + case 'I': + frame[frameIndex++] = 1; // Opcodes.INTEGER; + break; + case 'F': + frame[frameIndex++] = 2; // Opcodes.FLOAT; + break; + case 'J': + frame[frameIndex++] = 4; // Opcodes.LONG; + break; + case 'D': + frame[frameIndex++] = 3; // Opcodes.DOUBLE; + break; + case '[': + while (descriptor.charAt(i) == '[') { + ++i; + } + if (descriptor.charAt(i) == 'L') { + ++i; + while (descriptor.charAt(i) != ';') { + ++i; + } + } + frame[frameIndex++] = Frame.OBJECT + | cw.addType(descriptor.substring(j, ++i)); + break; + case 'L': + while (descriptor.charAt(i) != ';') { + ++i; + } + frame[frameIndex++] = Frame.OBJECT + | cw.addType(descriptor.substring(j + 1, i++)); + break; + default: + break loop; + } + } + frame[1] = frameIndex - 3; + endFrame(); + } + /** * Starts the visit of a stack map frame. * @@ -1783,8 +1841,9 @@ class MethodWriter extends MethodVisitor { * the number of local variables in the frame. * @param nStack * the number of stack elements in the frame. + * @return the index of the next element to be written in this frame. */ - private void startFrame(final int offset, final int nLocal, final int nStack) { + private int startFrame(final int offset, final int nLocal, final int nStack) { int n = 3 + nLocal + nStack; if (frame == null || frame.length < n) { frame = new int[n]; @@ -1792,7 +1851,7 @@ class MethodWriter extends MethodVisitor { frame[0] = offset; frame[1] = nLocal; frame[2] = nStack; - frameIndex = 3; + return 3; } /** @@ -2110,7 +2169,8 @@ class MethodWriter extends MethodVisitor { */ final void put(final ByteVector out) { final int FACTOR = ClassWriter.TO_ACC_SYNTHETIC; - int mask = Opcodes.ACC_DEPRECATED | ClassWriter.ACC_SYNTHETIC_ATTRIBUTE + int mask = ACC_CONSTRUCTOR | Opcodes.ACC_DEPRECATED + | ClassWriter.ACC_SYNTHETIC_ATTRIBUTE | ((access & ClassWriter.ACC_SYNTHETIC_ATTRIBUTE) / FACTOR); out.putShort(access & ~mask).putShort(name).putShort(desc); if (classReaderOffset != 0) { diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AdviceAdapter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AdviceAdapter.java index c7d51d45b91..c07917784df 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AdviceAdapter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AdviceAdapter.java @@ -442,10 +442,31 @@ public abstract class AdviceAdapter extends GeneratorAdapter implements Opcodes } } + @Deprecated @Override public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { - mv.visitMethodInsn(opcode, owner, name, desc); + if (api >= Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, + opcode == Opcodes.INVOKEINTERFACE); + } + + @Override + public void visitMethodInsn(final int opcode, final String owner, + final String name, final String desc, final boolean itf) { + if (api < Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc, itf); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, itf); + } + + private void doVisitMethodInsn(int opcode, final String owner, + final String name, final String desc, final boolean itf) { + mv.visitMethodInsn(opcode, owner, name, desc, itf); if (constructor) { Type[] types = Type.getArgumentTypes(desc); for (int i = 0; i < types.length; i++) { diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AnalyzerAdapter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AnalyzerAdapter.java index 1371250da0a..e914d45134e 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AnalyzerAdapter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AnalyzerAdapter.java @@ -165,10 +165,15 @@ public class AnalyzerAdapter extends MethodVisitor { * @param mv * the method visitor to which this adapter delegates calls. May * be null. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public AnalyzerAdapter(final String owner, final int access, final String name, final String desc, final MethodVisitor mv) { this(Opcodes.ASM5, owner, access, name, desc, mv); + if (getClass() != AnalyzerAdapter.class) { + throw new IllegalStateException(); + } } /** @@ -331,11 +336,32 @@ public class AnalyzerAdapter extends MethodVisitor { execute(opcode, 0, desc); } + @Deprecated @Override public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { + if (api >= Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, + opcode == Opcodes.INVOKEINTERFACE); + } + + @Override + public void visitMethodInsn(final int opcode, final String owner, + final String name, final String desc, final boolean itf) { + if (api < Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc, itf); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, itf); + } + + private void doVisitMethodInsn(int opcode, final String owner, + final String name, final String desc, final boolean itf) { if (mv != null) { - mv.visitMethodInsn(opcode, owner, name, desc); + mv.visitMethodInsn(opcode, owner, name, desc, itf); } if (this.locals == null) { labels = null; diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/CodeSizeEvaluator.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/CodeSizeEvaluator.java index a04a643d18b..0a41b2b8af6 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/CodeSizeEvaluator.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/CodeSizeEvaluator.java @@ -149,9 +149,30 @@ public class CodeSizeEvaluator extends MethodVisitor implements Opcodes { } } + @Deprecated @Override public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { + if (api >= Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, + opcode == Opcodes.INVOKEINTERFACE); + } + + @Override + public void visitMethodInsn(final int opcode, final String owner, + final String name, final String desc, final boolean itf) { + if (api < Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc, itf); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, itf); + } + + private void doVisitMethodInsn(int opcode, final String owner, + final String name, final String desc, final boolean itf) { if (opcode == INVOKEINTERFACE) { minSize += 5; maxSize += 5; @@ -160,7 +181,7 @@ public class CodeSizeEvaluator extends MethodVisitor implements Opcodes { maxSize += 3; } if (mv != null) { - mv.visitMethodInsn(opcode, owner, name, desc); + mv.visitMethodInsn(opcode, owner, name, desc, itf); } } diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/GeneratorAdapter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/GeneratorAdapter.java index 7e30acbbe72..786a5b5365a 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/GeneratorAdapter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/GeneratorAdapter.java @@ -284,10 +284,15 @@ public class GeneratorAdapter extends LocalVariablesSorter { * the method's name. * @param desc * the method's descriptor (see {@link Type Type}). + * @throws IllegalStateException + * If a subclass calls this constructor. */ public GeneratorAdapter(final MethodVisitor mv, final int access, final String name, final String desc) { this(Opcodes.ASM5, mv, access, name, desc); + if (getClass() != GeneratorAdapter.class) { + throw new IllegalStateException(); + } } /** @@ -1400,11 +1405,11 @@ public class GeneratorAdapter extends LocalVariablesSorter { * the method to be invoked. */ private void invokeInsn(final int opcode, final Type type, - final Method method) { + final Method method, final boolean itf) { String owner = type.getSort() == Type.ARRAY ? type.getDescriptor() : type.getInternalName(); mv.visitMethodInsn(opcode, owner, method.getName(), - method.getDescriptor()); + method.getDescriptor(), itf); } /** @@ -1416,7 +1421,7 @@ public class GeneratorAdapter extends LocalVariablesSorter { * the method to be invoked. */ public void invokeVirtual(final Type owner, final Method method) { - invokeInsn(Opcodes.INVOKEVIRTUAL, owner, method); + invokeInsn(Opcodes.INVOKEVIRTUAL, owner, method, false); } /** @@ -1428,7 +1433,7 @@ public class GeneratorAdapter extends LocalVariablesSorter { * the constructor to be invoked. */ public void invokeConstructor(final Type type, final Method method) { - invokeInsn(Opcodes.INVOKESPECIAL, type, method); + invokeInsn(Opcodes.INVOKESPECIAL, type, method, false); } /** @@ -1440,7 +1445,7 @@ public class GeneratorAdapter extends LocalVariablesSorter { * the method to be invoked. */ public void invokeStatic(final Type owner, final Method method) { - invokeInsn(Opcodes.INVOKESTATIC, owner, method); + invokeInsn(Opcodes.INVOKESTATIC, owner, method, false); } /** @@ -1452,7 +1457,7 @@ public class GeneratorAdapter extends LocalVariablesSorter { * the method to be invoked. */ public void invokeInterface(final Type owner, final Method method) { - invokeInsn(Opcodes.INVOKEINTERFACE, owner, method); + invokeInsn(Opcodes.INVOKEINTERFACE, owner, method, true); } /** diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/InstructionAdapter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/InstructionAdapter.java index 912b622db13..4ece2dba90d 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/InstructionAdapter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/InstructionAdapter.java @@ -82,9 +82,14 @@ public class InstructionAdapter extends MethodVisitor { * * @param mv * the method visitor to which this adapter delegates calls. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public InstructionAdapter(final MethodVisitor mv) { this(Opcodes.ASM5, mv); + if (getClass() != InstructionAdapter.class) { + throw new IllegalStateException(); + } } /** @@ -536,18 +541,39 @@ public class InstructionAdapter extends MethodVisitor { } } + @Deprecated @Override public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { + if (api >= Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, + opcode == Opcodes.INVOKEINTERFACE); + } + + @Override + public void visitMethodInsn(final int opcode, final String owner, + final String name, final String desc, final boolean itf) { + if (api < Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc, itf); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, itf); + } + + private void doVisitMethodInsn(int opcode, final String owner, + final String name, final String desc, final boolean itf) { switch (opcode) { case Opcodes.INVOKESPECIAL: - invokespecial(owner, name, desc); + invokespecial(owner, name, desc, itf); break; case Opcodes.INVOKEVIRTUAL: - invokevirtual(owner, name, desc); + invokevirtual(owner, name, desc, itf); break; case Opcodes.INVOKESTATIC: - invokestatic(owner, name, desc); + invokestatic(owner, name, desc, itf); break; case Opcodes.INVOKEINTERFACE: invokeinterface(owner, name, desc); @@ -1014,24 +1040,78 @@ public class InstructionAdapter extends MethodVisitor { mv.visitFieldInsn(Opcodes.PUTFIELD, owner, name, desc); } + @Deprecated public void invokevirtual(final String owner, final String name, final String desc) { + if (api >= Opcodes.ASM5) { + invokevirtual(owner, name, desc, false); + return; + } mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc); } + public void invokevirtual(final String owner, final String name, + final String desc, final boolean itf) { + if (api < Opcodes.ASM5) { + if (itf) { + throw new IllegalArgumentException( + "INVOKEVIRTUAL on interfaces require ASM 5"); + } + invokevirtual(owner, name, desc); + return; + } + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc, itf); + } + + @Deprecated public void invokespecial(final String owner, final String name, final String desc) { - mv.visitMethodInsn(Opcodes.INVOKESPECIAL, owner, name, desc); + if (api >= Opcodes.ASM5) { + invokespecial(owner, name, desc, false); + return; + } + mv.visitMethodInsn(Opcodes.INVOKESPECIAL, owner, name, desc, false); + } + + public void invokespecial(final String owner, final String name, + final String desc, final boolean itf) { + if (api < Opcodes.ASM5) { + if (itf) { + throw new IllegalArgumentException( + "INVOKESPECIAL on interfaces require ASM 5"); + } + invokespecial(owner, name, desc); + return; + } + mv.visitMethodInsn(Opcodes.INVOKESPECIAL, owner, name, desc, itf); + } + + @Deprecated + public void invokestatic(final String owner, final String name, + final String desc) { + if (api < Opcodes.ASM5) { + invokestatic(owner, name, desc, false); + return; + } + mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc, false); } public void invokestatic(final String owner, final String name, - final String desc) { - mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc); + final String desc, final boolean itf) { + if (api < Opcodes.ASM5) { + if (itf) { + throw new IllegalArgumentException( + "INVOKESTATIC on interfaces require ASM 5"); + } + invokestatic(owner, name, desc); + return; + } + mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc, itf); } public void invokeinterface(final String owner, final String name, final String desc) { - mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, owner, name, desc); + mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, owner, name, desc, true); } public void invokedynamic(String name, String desc, Handle bsm, diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/JSRInlinerAdapter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/JSRInlinerAdapter.java index 1a255b7096f..e0514114e51 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/JSRInlinerAdapter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/JSRInlinerAdapter.java @@ -136,11 +136,16 @@ public class JSRInlinerAdapter extends MethodNode implements Opcodes { * the internal names of the method's exception classes (see * {@link Type#getInternalName() getInternalName}). May be * null. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public JSRInlinerAdapter(final MethodVisitor mv, final int access, final String name, final String desc, final String signature, final String[] exceptions) { this(Opcodes.ASM5, mv, access, name, desc, signature, exceptions); + if (getClass() != JSRInlinerAdapter.class) { + throw new IllegalStateException(); + } } /** @@ -381,6 +386,17 @@ public class JSRInlinerAdapter extends MethodNode implements Opcodes { // Use tail recursion here in the form of an outer while loop to // avoid our stack growing needlessly: index++; + + // We implicitly assumed above that execution can always fall + // through to the next instruction after a JSR. But a subroutine may + // never return, in which case the code after the JSR is unreachable + // and can be anything. In particular, it can seem to fall off the + // end of the method, so we must handle this case here (we could + // instead detect whether execution can return or not from a JSR, + // but this is more complicated). + if (index >= instructions.size()) { + return; + } } } diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/LocalVariablesSorter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/LocalVariablesSorter.java index 0353c499382..5d02c53768d 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/LocalVariablesSorter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/LocalVariablesSorter.java @@ -120,10 +120,15 @@ public class LocalVariablesSorter extends MethodVisitor { * the method's descriptor (see {@link Type Type}). * @param mv * the method visitor to which this adapter delegates calls. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public LocalVariablesSorter(final int access, final String desc, final MethodVisitor mv) { this(Opcodes.ASM5, access, desc, mv); + if (getClass() != LocalVariablesSorter.class) { + throw new IllegalStateException(); + } } /** @@ -323,6 +328,7 @@ public class LocalVariablesSorter extends MethodVisitor { int local = newLocalMapping(type); setLocalType(local, type); setFrameLocal(local, t); + changed = true; return local; } diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingMethodAdapter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingMethodAdapter.java index 319d9dedc7e..d5493a1b1b5 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingMethodAdapter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingMethodAdapter.java @@ -148,12 +148,41 @@ public class RemappingMethodAdapter extends LocalVariablesSorter { remapper.mapDesc(desc)); } + @Deprecated @Override - public void visitMethodInsn(int opcode, String owner, String name, - String desc) { - super.visitMethodInsn(opcode, remapper.mapType(owner), - remapper.mapMethodName(owner, name, desc), - remapper.mapMethodDesc(desc)); + public void visitMethodInsn(final int opcode, final String owner, + final String name, final String desc) { + if (api >= Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, + opcode == Opcodes.INVOKEINTERFACE); + } + + @Override + public void visitMethodInsn(final int opcode, final String owner, + final String name, final String desc, final boolean itf) { + if (api < Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc, itf); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, itf); + } + + private void doVisitMethodInsn(int opcode, String owner, String name, + String desc, boolean itf) { + // Calling super.visitMethodInsn requires to call the correct version + // depending on this.api (otherwise infinite loops can occur). To + // simplify and to make it easier to automatically remove the backward + // compatibility code, we inline the code of the overridden method here. + // IMPORTANT: THIS ASSUMES THAT visitMethodInsn IS NOT OVERRIDDEN IN + // LocalVariableSorter. + if (mv != null) { + mv.visitMethodInsn(opcode, remapper.mapType(owner), + remapper.mapMethodName(owner, name, desc), + remapper.mapMethodDesc(desc), itf); + } } @Override diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingSignatureAdapter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingSignatureAdapter.java index 458ee69b1ff..3b8ab02a3f1 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingSignatureAdapter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingSignatureAdapter.java @@ -95,10 +95,12 @@ public class RemappingSignatureAdapter extends SignatureVisitor { @Override public void visitInnerClassType(String name) { + String remappedOuter = remapper.mapType(className) + '$'; className = className + '$' + name; String remappedName = remapper.mapType(className); - v.visitInnerClassType(remappedName.substring(remappedName - .lastIndexOf('$') + 1)); + int index = remappedName.startsWith(remappedOuter) ? remappedOuter + .length() : remappedName.lastIndexOf('$') + 1; + v.visitInnerClassType(remappedName.substring(index)); } @Override diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/SerialVersionUIDAdder.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/SerialVersionUIDAdder.java index 4050d0ce402..de8915125ff 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/SerialVersionUIDAdder.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/SerialVersionUIDAdder.java @@ -195,9 +195,14 @@ public class SerialVersionUIDAdder extends ClassVisitor { * @param cv * a {@link ClassVisitor} to which this visitor will delegate * calls. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public SerialVersionUIDAdder(final ClassVisitor cv) { this(Opcodes.ASM5, cv); + if (getClass() != SerialVersionUIDAdder.class) { + throw new IllegalStateException(); + } } /** @@ -218,7 +223,7 @@ public class SerialVersionUIDAdder extends ClassVisitor { } // ------------------------------------------------------------------------ - // Overriden methods + // Overridden methods // ------------------------------------------------------------------------ /* @@ -234,7 +239,7 @@ public class SerialVersionUIDAdder extends ClassVisitor { if (computeSVUID) { this.name = name; this.access = access; - this.interfaces = interfaces; + this.interfaces = Arrays.copyOf(interfaces, interfaces.length); } super.visit(version, access, name, signature, superName, interfaces); diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/StaticInitMerger.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/StaticInitMerger.java index 3514d090787..2f2f3b6ddcb 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/StaticInitMerger.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/StaticInitMerger.java @@ -107,7 +107,8 @@ public class StaticInitMerger extends ClassVisitor { if (clinit == null) { clinit = cv.visitMethod(a, name, desc, null, null); } - clinit.visitMethodInsn(Opcodes.INVOKESTATIC, this.name, n, desc); + clinit.visitMethodInsn(Opcodes.INVOKESTATIC, this.name, n, desc, + false); } else { mv = cv.visitMethod(access, name, desc, signature, exceptions); } diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/TryCatchBlockSorter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/TryCatchBlockSorter.java index 0b2be355877..39c2bf37904 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/TryCatchBlockSorter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/TryCatchBlockSorter.java @@ -66,7 +66,6 @@ import jdk.internal.org.objectweb.asm.MethodVisitor; import jdk.internal.org.objectweb.asm.Opcodes; import jdk.internal.org.objectweb.asm.tree.MethodNode; import jdk.internal.org.objectweb.asm.tree.TryCatchBlockNode; -import jdk.internal.org.objectweb.asm.tree.TypeAnnotationNode; /** * A {@link MethodVisitor} adapter to sort the exception handlers. The handlers diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/AnnotationNode.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/AnnotationNode.java index 57b88f1b11f..b67ea38591a 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/AnnotationNode.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/AnnotationNode.java @@ -96,9 +96,14 @@ public class AnnotationNode extends AnnotationVisitor { * * @param desc * the class descriptor of the annotation class. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public AnnotationNode(final String desc) { this(Opcodes.ASM5, desc); + if (getClass() != AnnotationNode.class) { + throw new IllegalStateException(); + } } /** diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/ClassNode.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/ClassNode.java index cb70518aa93..39334641754 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/ClassNode.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/ClassNode.java @@ -216,9 +216,15 @@ public class ClassNode extends ClassVisitor { * Constructs a new {@link ClassNode}. Subclasses must not use this * constructor. Instead, they must use the {@link #ClassNode(int)} * version. + * + * @throws IllegalStateException + * If a subclass calls this constructor. */ public ClassNode() { this(Opcodes.ASM5); + if (getClass() != ClassNode.class) { + throw new IllegalStateException(); + } } /** diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/FieldNode.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/FieldNode.java index a155d2c1b80..cc79a5815cb 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/FieldNode.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/FieldNode.java @@ -168,16 +168,20 @@ public class FieldNode extends FieldVisitor { * null if the field does not have an initial value, * must be an {@link Integer}, a {@link Float}, a {@link Long}, a * {@link Double} or a {@link String}. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public FieldNode(final int access, final String name, final String desc, final String signature, final Object value) { this(Opcodes.ASM5, access, name, desc, signature, value); + if (getClass() != FieldNode.class) { + throw new IllegalStateException(); + } } /** * Constructs a new {@link FieldNode}. Subclasses must not use this - * constructor. Instead, they must use the - * {@link #FieldNode(int, int, String, String, String, Object)} version. + * constructor
    . * * @param api * the ASM API version implemented by this visitor. Must be one diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodInsnNode.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodInsnNode.java index 6f6d5dc4453..2f61df3b517 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodInsnNode.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodInsnNode.java @@ -61,6 +61,7 @@ package jdk.internal.org.objectweb.asm.tree; import java.util.Map; import jdk.internal.org.objectweb.asm.MethodVisitor; +import jdk.internal.org.objectweb.asm.Opcodes; /** * A node that represents a method instruction. A method instruction is an @@ -86,6 +87,11 @@ public class MethodInsnNode extends AbstractInsnNode { */ public String desc; + /** + * If the method's owner class if an interface. + */ + public boolean itf; + /** * Constructs a new {@link MethodInsnNode}. * @@ -102,12 +108,37 @@ public class MethodInsnNode extends AbstractInsnNode { * @param desc * the method's descriptor (see {@link jdk.internal.org.objectweb.asm.Type}). */ + @Deprecated public MethodInsnNode(final int opcode, final String owner, final String name, final String desc) { + this(opcode, owner, name, desc, opcode == Opcodes.INVOKEINTERFACE); + } + + /** + * Constructs a new {@link MethodInsnNode}. + * + * @param opcode + * the opcode of the type instruction to be constructed. This + * opcode must be INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or + * INVOKEINTERFACE. + * @param owner + * the internal name of the method's owner class (see + * {@link jdk.internal.org.objectweb.asm.Type#getInternalName() + * getInternalName}). + * @param name + * the method's name. + * @param desc + * the method's descriptor (see {@link jdk.internal.org.objectweb.asm.Type}). + * @param itf + * if the method's owner class is an interface. + */ + public MethodInsnNode(final int opcode, final String owner, + final String name, final String desc, final boolean itf) { super(opcode); this.owner = owner; this.name = name; this.desc = desc; + this.itf = itf; } /** @@ -128,11 +159,11 @@ public class MethodInsnNode extends AbstractInsnNode { @Override public void accept(final MethodVisitor mv) { - mv.visitMethodInsn(opcode, owner, name, desc); + mv.visitMethodInsn(opcode, owner, name, desc, itf); } @Override public AbstractInsnNode clone(final Map labels) { - return new MethodInsnNode(opcode, owner, name, desc); + return new MethodInsnNode(opcode, owner, name, desc, itf); } } diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodNode.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodNode.java index 072d549265c..dfd58a0fe1f 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodNode.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodNode.java @@ -71,7 +71,6 @@ import jdk.internal.org.objectweb.asm.MethodVisitor; import jdk.internal.org.objectweb.asm.Opcodes; import jdk.internal.org.objectweb.asm.Type; import jdk.internal.org.objectweb.asm.TypePath; -import jdk.internal.org.objectweb.asm.TypeReference; /** * A node that represents a method. @@ -245,9 +244,15 @@ public class MethodNode extends MethodVisitor { * Constructs an uninitialized {@link MethodNode}. Subclasses must not * use this constructor. Instead, they must use the * {@link #MethodNode(int)} version. + * + * @throws IllegalStateException + * If a subclass calls this constructor. */ public MethodNode() { this(Opcodes.ASM5); + if (getClass() != MethodNode.class) { + throw new IllegalStateException(); + } } /** @@ -281,10 +286,15 @@ public class MethodNode extends MethodVisitor { * the internal names of the method's exception classes (see * {@link Type#getInternalName() getInternalName}). May be * null. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public MethodNode(final int access, final String name, final String desc, final String signature, final String[] exceptions) { this(Opcodes.ASM5, access, name, desc, signature, exceptions); + if (getClass() != MethodNode.class) { + throw new IllegalStateException(); + } } /** @@ -461,12 +471,27 @@ public class MethodNode extends MethodVisitor { instructions.add(new FieldInsnNode(opcode, owner, name, desc)); } + @Deprecated @Override - public void visitMethodInsn(final int opcode, final String owner, - final String name, final String desc) { + public void visitMethodInsn(int opcode, String owner, String name, + String desc) { + if (api >= Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc); + return; + } instructions.add(new MethodInsnNode(opcode, owner, name, desc)); } + @Override + public void visitMethodInsn(int opcode, String owner, String name, + String desc, boolean itf) { + if (api < Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc, itf); + return; + } + instructions.add(new MethodInsnNode(opcode, owner, name, desc, itf)); + } + @Override public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { @@ -696,6 +721,12 @@ public class MethodNode extends MethodVisitor { && insn.invisibleTypeAnnotations.size() > 0) { throw new RuntimeException(); } + if (insn instanceof MethodInsnNode) { + boolean itf = ((MethodInsnNode) insn).itf; + if (itf != (insn.opcode == Opcodes.INVOKEINTERFACE)) { + throw new RuntimeException(); + } + } } if (visibleLocalVariableAnnotations != null && visibleLocalVariableAnnotations.size() > 0) { @@ -705,7 +736,6 @@ public class MethodNode extends MethodVisitor { && invisibleLocalVariableAnnotations.size() > 0) { throw new RuntimeException(); } - } } diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/TypeAnnotationNode.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/TypeAnnotationNode.java index c9e21d8c5be..641dca1c17d 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/TypeAnnotationNode.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/TypeAnnotationNode.java @@ -94,10 +94,15 @@ public class TypeAnnotationNode extends AnnotationNode { * null if the annotation targets 'typeRef' as a whole. * @param desc * the class descriptor of the annotation class. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public TypeAnnotationNode(final int typeRef, final TypePath typePath, final String desc) { this(Opcodes.ASM5, typeRef, typePath, desc); + if (getClass() != TypeAnnotationNode.class) { + throw new IllegalStateException(); + } } /** diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/analysis/Frame.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/analysis/Frame.java index 2d9434fc22e..f6b8db3ddfb 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/analysis/Frame.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/analysis/Frame.java @@ -162,6 +162,15 @@ public class Frame { return locals; } + /** + * Returns the maximum stack size of this frame. + * + * @return the maximum stack size of this frame. + */ + public int getMaxStackSize() { + return values.length - locals; + } + /** * Returns the value of the given local variable. * diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/ASMifier.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/ASMifier.java index 6b6bd4dc6bb..a9487e16f5e 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/ASMifier.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/ASMifier.java @@ -113,9 +113,15 @@ public class ASMifier extends Printer { * Constructs a new {@link ASMifier}. Subclasses must not use this * constructor. Instead, they must use the * {@link #ASMifier(int, String, int)} version. + * + * @throws IllegalStateException + * If a subclass calls this constructor. */ public ASMifier() { this(Opcodes.ASM5, "cw", 0); + if (getClass() != ASMifier.class) { + throw new IllegalStateException(); + } } /** @@ -483,8 +489,9 @@ public class ASMifier extends Printer { @Override public void visitParameter(String parameterName, int access) { buf.setLength(0); - buf.append(name).append(".visitParameter(").append(parameterName) - .append(", "); + buf.append(name).append(".visitParameter("); + appendString(buf, parameterName); + buf.append(", "); appendAccess(access); text.add(buf.append(");\n").toString()); } @@ -639,9 +646,30 @@ public class ASMifier extends Printer { text.add(buf.toString()); } + @Deprecated @Override public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { + if (api >= Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, + opcode == Opcodes.INVOKEINTERFACE); + } + + @Override + public void visitMethodInsn(final int opcode, final String owner, + final String name, final String desc, final boolean itf) { + if (api < Opcodes.ASM5) { + super.visitMethodInsn(opcode, owner, name, desc, itf); + return; + } + doVisitMethodInsn(opcode, owner, name, desc, itf); + } + + private void doVisitMethodInsn(final int opcode, final String owner, + final String name, final String desc, final boolean itf) { buf.setLength(0); buf.append(this.name).append(".visitMethodInsn(") .append(OPCODES[opcode]).append(", "); @@ -650,6 +678,8 @@ public class ASMifier extends Printer { appendConstant(name); buf.append(", "); appendConstant(desc); + buf.append(", "); + buf.append(itf ? "true" : "false"); buf.append(");\n"); text.add(buf.toString()); } @@ -1076,6 +1106,13 @@ public class ASMifier extends Printer { buf.append("ACC_DEPRECATED"); first = false; } + if ((access & Opcodes.ACC_MANDATED) != 0) { + if (!first) { + buf.append(" + "); + } + buf.append("ACC_MANDATED"); + first = false; + } if (first) { buf.append('0'); } diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckClassAdapter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckClassAdapter.java index ad29ab964a7..5105db7f9c2 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckClassAdapter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckClassAdapter.java @@ -246,7 +246,7 @@ public class CheckClassAdapter extends ClassVisitor { List interfaces = new ArrayList(); for (Iterator i = cn.interfaces.iterator(); i.hasNext();) { - interfaces.add(Type.getObjectType(i.next().toString())); + interfaces.add(Type.getObjectType(i.next())); } for (int i = 0; i < methods.size(); ++i) { @@ -359,9 +359,14 @@ public class CheckClassAdapter extends ClassVisitor { * false to not perform any data flow check (see * {@link CheckMethodAdapter}). This option requires valid * maxLocals and maxStack values. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public CheckClassAdapter(final ClassVisitor cv, final boolean checkDataFlow) { this(Opcodes.ASM5, cv, checkDataFlow); + if (getClass() != CheckClassAdapter.class) { + throw new IllegalStateException(); + } } /** @@ -471,7 +476,15 @@ public class CheckClassAdapter extends ClassVisitor { CheckMethodAdapter.checkInternalName(outerName, "outer class name"); } if (innerName != null) { - CheckMethodAdapter.checkIdentifier(innerName, "inner class name"); + int start = 0; + while (start < innerName.length() + && Character.isDigit(innerName.charAt(start))) { + start++; + } + if (start == 0 || start < innerName.length()) { + CheckMethodAdapter.checkIdentifier(innerName, start, -1, + "inner class name"); + } } checkAccess(access, Opcodes.ACC_PUBLIC + Opcodes.ACC_PRIVATE + Opcodes.ACC_PROTECTED + Opcodes.ACC_STATIC diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckFieldAdapter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckFieldAdapter.java index b09559c0d8a..e0857bf06b3 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckFieldAdapter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckFieldAdapter.java @@ -79,9 +79,14 @@ public class CheckFieldAdapter extends FieldVisitor { * * @param fv * the field visitor to which this adapter must delegate calls. + * @throws IllegalStateException + * If a subclass calls this constructor. */ public CheckFieldAdapter(final FieldVisitor fv) { this(Opcodes.ASM5, fv); + if (getClass() != CheckFieldAdapter.class) { + throw new IllegalStateException(); + } } /** diff --git a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckMethodAdapter.java b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckMethodAdapter.java index b59709890f4..0716debae62 100644 --- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckMethodAdapter.java +++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckMethodAdapter.java @@ -142,11 +142,6 @@ public class CheckMethodAdapter extends MethodVisitor { */ private Set + *

    Swing Components Supporting Action

    *

    * Many of Swing's components have an Action property. When * an Action is set on a component, the following things @@ -95,8 +95,7 @@ import java.beans.*; * button's corresponding property being set to null. *

    * + * summary="Supported Action properties"> * *
    Component Property * Components diff --git a/jdk/src/share/classes/javax/swing/Box.java b/jdk/src/share/classes/javax/swing/Box.java index 2f4c6e4c76f..1a3ace74129 100644 --- a/jdk/src/share/classes/javax/swing/Box.java +++ b/jdk/src/share/classes/javax/swing/Box.java @@ -155,7 +155,7 @@ public class Box extends JComponent implements Accessible { * in which case it takes its share of available space, * just like any other component that has no maximum height. * - * @param width the width of the invisible component, in pixels >= 0 + * @param width the width of the invisible component, in pixels >= 0 * @return the component * @see #createVerticalStrut * @see #createGlue @@ -179,7 +179,7 @@ public class Box extends JComponent implements Accessible { * in which case it takes its share of available space, * just like any other component that has no maximum width. * - * @param height the height of the invisible component, in pixels >= 0 + * @param height the height of the invisible component, in pixels >= 0 * @return the component * @see #createHorizontalStrut * @see #createGlue diff --git a/jdk/src/share/classes/javax/swing/BoxLayout.java b/jdk/src/share/classes/javax/swing/BoxLayout.java index f510553063e..09968fb0b35 100644 --- a/jdk/src/share/classes/javax/swing/BoxLayout.java +++ b/jdk/src/share/classes/javax/swing/BoxLayout.java @@ -287,7 +287,7 @@ public class BoxLayout implements LayoutManager2, Serializable { * in the specified target container. * * @param target the container that needs to be laid out - * @return the dimensions >= 0 && <= Integer.MAX_VALUE + * @return the dimensions >= 0 && <= Integer.MAX_VALUE * @exception AWTError if the target isn't the container specified to the * BoxLayout constructor * @see Container @@ -313,7 +313,7 @@ public class BoxLayout implements LayoutManager2, Serializable { * contained in the specified target container. * * @param target the container that needs to be laid out - * @return the dimensions >= 0 && <= Integer.MAX_VALUE + * @return the dimensions >= 0 && <= Integer.MAX_VALUE * @exception AWTError if the target isn't the container specified to the * BoxLayout constructor * @see #preferredLayoutSize @@ -338,7 +338,7 @@ public class BoxLayout implements LayoutManager2, Serializable { * to lay out the components it contains. * * @param target the container that needs to be laid out - * @return the dimensions >= 0 && <= Integer.MAX_VALUE + * @return the dimensions >= 0 && <= Integer.MAX_VALUE * @exception AWTError if the target isn't the container specified to the * BoxLayout constructor * @see #preferredLayoutSize @@ -365,7 +365,7 @@ public class BoxLayout implements LayoutManager2, Serializable { * to place the children along the X axis will be returned. * * @param target the container - * @return the alignment >= 0.0f && <= 1.0f + * @return the alignment >= 0.0f && <= 1.0f * @exception AWTError if the target isn't the container specified to the * BoxLayout constructor */ @@ -382,7 +382,7 @@ public class BoxLayout implements LayoutManager2, Serializable { * to place the children along the Y axis will be returned. * * @param target the container - * @return the alignment >= 0.0f && <= 1.0f + * @return the alignment >= 0.0f && <= 1.0f * @exception AWTError if the target isn't the container specified to the * BoxLayout constructor */ diff --git a/jdk/src/share/classes/javax/swing/CellRendererPane.java b/jdk/src/share/classes/javax/swing/CellRendererPane.java index 6a9f17b058a..3e43b80d9ea 100644 --- a/jdk/src/share/classes/javax/swing/CellRendererPane.java +++ b/jdk/src/share/classes/javax/swing/CellRendererPane.java @@ -96,7 +96,7 @@ public class CellRendererPane extends Container implements Accessible /** * If the specified component is already a child of this then we don't * bother doing anything - stacking order doesn't matter for cell - * renderer components (CellRendererPane doesn't paint anyway).< + * renderer components (CellRendererPane doesn't paint anyway). */ protected void addImpl(Component x, Object constraints, int index) { if (x.getParent() == this) { diff --git a/jdk/src/share/classes/javax/swing/DefaultListSelectionModel.java b/jdk/src/share/classes/javax/swing/DefaultListSelectionModel.java index 26f06c63a2c..388a5a59a81 100644 --- a/jdk/src/share/classes/javax/swing/DefaultListSelectionModel.java +++ b/jdk/src/share/classes/javax/swing/DefaultListSelectionModel.java @@ -637,7 +637,7 @@ public class DefaultListSelectionModel implements ListSelectionModel, Cloneable, * Remove the indices in the interval index0,index1 (inclusive) from * the selection model. This is typically called to sync the selection * model width a corresponding change in the data model. Note - * that (as always) index0 need not be <= index1. + * that (as always) index0 need not be <= index1. */ public void removeIndexInterval(int index0, int index1) { diff --git a/jdk/src/share/classes/javax/swing/DesktopManager.java b/jdk/src/share/classes/javax/swing/DesktopManager.java index 2f141e49350..e0a2a434a45 100644 --- a/jdk/src/share/classes/javax/swing/DesktopManager.java +++ b/jdk/src/share/classes/javax/swing/DesktopManager.java @@ -26,13 +26,13 @@ package javax.swing; /** DesktopManager objects are owned by a JDesktopPane object. They are responsible - * for implementing L&F specific behaviors for the JDesktopPane. JInternalFrame + * for implementing L&F specific behaviors for the JDesktopPane. JInternalFrame * implementations should delegate specific behaviors to the DesktopManager. For * instance, if a JInternalFrame was asked to iconify, it should try: *
       *    getDesktopPane().getDesktopManager().iconifyFrame(frame);
       * 
    - * This delegation allows each L&F to provide custom behaviors for desktop-specific + * This delegation allows each L&F to provide custom behaviors for desktop-specific * actions. (For example, how and where the internal frame's icon would appear.) *

    This class provides a policy for the various JInternalFrame methods, it is not * meant to be called directly rather the various JInternalFrame methods will call diff --git a/jdk/src/share/classes/javax/swing/GroupLayout.java b/jdk/src/share/classes/javax/swing/GroupLayout.java index 9b0d4df485b..e3be1ddfdd5 100644 --- a/jdk/src/share/classes/javax/swing/GroupLayout.java +++ b/jdk/src/share/classes/javax/swing/GroupLayout.java @@ -80,7 +80,7 @@ import static javax.swing.SwingConstants.VERTICAL; * axis. The sequential group contains three components. A parallel group * was used along the vertical axis. *

    - * + * Sequential group along the horizontal axis in three components *

    * To reinforce that each axis is treated independently the diagram shows * the range of each group and element along each axis. The @@ -102,7 +102,7 @@ import static javax.swing.SwingConstants.VERTICAL; * the vertical axis. *

    *

    - * + * Sequential group along the vertical axis in three components *

    * As {@code c1} is the largest of the three components, the parallel * group is sized to {@code c1}. As {@code c2} and {@code c3} are smaller @@ -116,7 +116,7 @@ import static javax.swing.SwingConstants.VERTICAL; * The following diagram shows a sequential group along both the horizontal * and vertical axis. *

    - * + * Sequential group along both the horizontal and vertical axis in three components *

    * {@code GroupLayout} provides the ability to insert gaps between * {@code Component}s. The size of the gap is determined by an @@ -173,7 +173,7 @@ import static javax.swing.SwingConstants.VERTICAL; *

    * When run the following is produced. *

    - * + * Produced horizontal/vertical form *

    * This layout consists of the following. *

    • The horizontal axis consists of a sequential group containing two diff --git a/jdk/src/share/classes/javax/swing/JComponent.java b/jdk/src/share/classes/javax/swing/JComponent.java index 598916da412..3f4d3f25606 100644 --- a/jdk/src/share/classes/javax/swing/JComponent.java +++ b/jdk/src/share/classes/javax/swing/JComponent.java @@ -4906,12 +4906,12 @@ public abstract class JComponent extends Container implements Serializable, /** * Returns {@code true} if a paint triggered on a child component should cause * painting to originate from this Component, or one of its ancestors. - *

      + *

      * Calling {@link #repaint} or {@link #paintImmediately(int, int, int, int)} * on a Swing component will result in calling * the {@link JComponent#paintImmediately(int, int, int, int)} method of * the first ancestor which {@code isPaintingOrigin()} returns {@code true}, if there are any. - *

      + *

      * {@code JComponent} subclasses that need to be painted when any of their * children are repainted should override this method to return {@code true}. * diff --git a/jdk/src/share/classes/javax/swing/JEditorPane.java b/jdk/src/share/classes/javax/swing/JEditorPane.java index f4c5893068c..a104d1c0858 100644 --- a/jdk/src/share/classes/javax/swing/JEditorPane.java +++ b/jdk/src/share/classes/javax/swing/JEditorPane.java @@ -103,7 +103,7 @@ import javax.accessibility.*; * fragment is a possible hyperlink listener implementation, that treats * HTML frame events specially, and simply displays any other activated * hyperlinks. - *

      + * 
       
            class Hyperactive implements HyperlinkListener {
        
      @@ -125,7 +125,7 @@ import javax.accessibility.*;
                }
            }
       
      - * 
      + *
      *

      * For information on customizing how text/html is rendered please see * {@link #W3C_LENGTH_UNITS} and {@link #HONOR_DISPLAY_PROPERTIES} diff --git a/jdk/src/share/classes/javax/swing/JFileChooser.java b/jdk/src/share/classes/javax/swing/JFileChooser.java index 218f6ae7310..012c6753300 100644 --- a/jdk/src/share/classes/javax/swing/JFileChooser.java +++ b/jdk/src/share/classes/javax/swing/JFileChooser.java @@ -67,7 +67,7 @@ import java.lang.ref.WeakReference; *

        *    JFileChooser chooser = new JFileChooser();
        *    FileNameExtensionFilter filter = new FileNameExtensionFilter(
      - *        "JPG & GIF Images", "jpg", "gif");
      + *        "JPG & GIF Images", "jpg", "gif");
        *    chooser.setFileFilter(filter);
        *    int returnVal = chooser.showOpenDialog(parent);
        *    if(returnVal == JFileChooser.APPROVE_OPTION) {
      @@ -634,7 +634,7 @@ public class JFileChooser extends JComponent implements Accessible {
           /**
            * Pops up an "Open File" file chooser dialog. Note that the
            * text that appears in the approve button is determined by
      -     * the L&F.
      +     * the L&F.
            *
            * @param    parent  the parent component of the dialog,
            *                  can be null;
      @@ -659,7 +659,7 @@ public class JFileChooser extends JComponent implements Accessible {
           /**
            * Pops up a "Save File" file chooser dialog. Note that the
            * text that appears in the approve button is determined by
      -     * the L&F.
      +     * the L&F.
            *
            * @param    parent  the parent component of the dialog,
            *                  can be null;
      @@ -861,7 +861,7 @@ public class JFileChooser extends JComponent implements Accessible {
            * @beaninfo
            *   preferred: true
            *       bound: true
      -     * description: Sets whether the approve & cancel buttons are shown.
      +     * description: Sets whether the approve & cancel buttons are shown.
            *
            * @see #getControlButtonsAreShown
            * @see #CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY
      @@ -1841,7 +1841,7 @@ public class JFileChooser extends JComponent implements Accessible {
           }
       
           /**
      -     * Returns a string that specifies the name of the L&F class
      +     * Returns a string that specifies the name of the L&F class
            * that renders this component.
            *
            * @return the string "FileChooserUI"
      @@ -1849,16 +1849,16 @@ public class JFileChooser extends JComponent implements Accessible {
            * @see UIDefaults#getUI
            * @beaninfo
            *        expert: true
      -     *   description: A string that specifies the name of the L&F class.
      +     *   description: A string that specifies the name of the L&F class.
            */
           public String getUIClassID() {
               return uiClassID;
           }
       
           /**
      -     * Gets the UI object which implements the L&F for this component.
      +     * Gets the UI object which implements the L&F for this component.
            *
      -     * @return the FileChooserUI object that implements the FileChooserUI L&F
      +     * @return the FileChooserUI object that implements the FileChooserUI L&F
            */
           public FileChooserUI getUI() {
               return (FileChooserUI) ui;
      diff --git a/jdk/src/share/classes/javax/swing/JLabel.java b/jdk/src/share/classes/javax/swing/JLabel.java
      index be900a4697d..c6e28d92eaa 100644
      --- a/jdk/src/share/classes/javax/swing/JLabel.java
      +++ b/jdk/src/share/classes/javax/swing/JLabel.java
      @@ -237,7 +237,7 @@ public class JLabel extends JComponent implements SwingConstants, Accessible
       
       
           /**
      -     * Returns the L&F object that renders this component.
      +     * Returns the L&F object that renders this component.
            *
            * @return LabelUI object
            */
      @@ -247,9 +247,9 @@ public class JLabel extends JComponent implements SwingConstants, Accessible
       
       
           /**
      -     * Sets the L&F object that renders this component.
      +     * Sets the L&F object that renders this component.
            *
      -     * @param ui  the LabelUI L&F object
      +     * @param ui  the LabelUI L&F object
            * @see UIDefaults#getUI
            * @beaninfo
            *        bound: true
      @@ -277,7 +277,7 @@ public class JLabel extends JComponent implements SwingConstants, Accessible
       
       
           /**
      -     * Returns a string that specifies the name of the l&f class
      +     * Returns a string that specifies the name of the l&f class
            * that renders this component.
            *
            * @return String "LabelUI"
      @@ -545,8 +545,8 @@ public class JLabel extends JComponent implements SwingConstants, Accessible
            *
            * @since 1.4
            * @param index Index into the String to underline
      -     * @exception IllegalArgumentException will be thrown if index= length of the text, or < -1
      +     * @exception IllegalArgumentException will be thrown if index
      +     *            is >= length of the text, or < -1
            *
            * @beaninfo
            *        bound: true
      @@ -1251,7 +1251,7 @@ public class JLabel extends JComponent implements SwingConstants, Accessible
                *
                * @param part the AccessibleText.CHARACTER, AccessibleText.WORD,
                * or AccessibleText.SENTENCE to retrieve
      -         * @param index an index within the text >= 0
      +         * @param index an index within the text >= 0
                * @return the letter, word, or sentence,
                *   null for an invalid index or part
                * @since 1.3
      @@ -1298,7 +1298,7 @@ public class JLabel extends JComponent implements SwingConstants, Accessible
                *
                * @param part the AccessibleText.CHARACTER, AccessibleText.WORD,
                * or AccessibleText.SENTENCE to retrieve
      -         * @param index an index within the text >= 0
      +         * @param index an index within the text >= 0
                * @return the letter, word, or sentence, null for an invalid
                *  index or part
                * @since 1.3
      @@ -1362,7 +1362,7 @@ public class JLabel extends JComponent implements SwingConstants, Accessible
                *
                * @param part the AccessibleText.CHARACTER, AccessibleText.WORD,
                *   or AccessibleText.SENTENCE to retrieve
      -         * @param index an index within the text >= 0
      +         * @param index an index within the text >= 0
                * @return the letter, word, or sentence, null for an invalid index
                *  or part
                * @since 1.3
      diff --git a/jdk/src/share/classes/javax/swing/JList.java b/jdk/src/share/classes/javax/swing/JList.java
      index 9b016251a7e..e62bc80135b 100644
      --- a/jdk/src/share/classes/javax/swing/JList.java
      +++ b/jdk/src/share/classes/javax/swing/JList.java
      @@ -146,7 +146,7 @@ import static sun.swing.SwingUtilities2.Section.*;
        * Responsibility for listening to selection changes in order to keep the list's
        * visual representation up to date lies with the list's {@code ListUI}.
        * 

      - * + * * Painting of cells in a {@code JList} is handled by a delegate called a * cell renderer, installed on the list as the {@code cellRenderer} property. * The renderer provides a {@code java.awt.Component} that is used @@ -202,7 +202,7 @@ import static sun.swing.SwingUtilities2.Section.*; * To avoid these calculations, you can set a {@code fixedCellWidth} and * {@code fixedCellHeight} on the list, or have these values calculated * automatically based on a single prototype value: - * + * *

        * {@code
        * JList bigDataList = new JList(bigData);
      @@ -1512,7 +1512,7 @@ public class JList extends JComponent implements Scrollable, Accessible
            * tooltip text on the cell level, by using {@code setToolTipText} on your
            * cell renderer component.
            * 

      - * Note: For JList to properly display the + * Note: For JList to properly display the * tooltips of its renderers in this manner, JList must be a * registered component with the ToolTipManager. This registration * is done automatically in the constructor. However, if at a later point diff --git a/jdk/src/share/classes/javax/swing/JMenu.java b/jdk/src/share/classes/javax/swing/JMenu.java index 60aa661ff70..7493ede1ab8 100644 --- a/jdk/src/share/classes/javax/swing/JMenu.java +++ b/jdk/src/share/classes/javax/swing/JMenu.java @@ -225,7 +225,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement /** - * Returns the name of the L&F class that renders this component. + * Returns the name of the L&F class that renders this component. * * @return the string "MenuUI" * @see JComponent#getUIClassID @@ -490,7 +490,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement /** * Returns the suggested delay, in milliseconds, before submenus * are popped up or down. - * Each look and feel (L&F) may determine its own policy for + * Each look and feel (L&F) may determine its own policy for * observing the delay property. * In most cases, the delay is not observed for top level menus * or while dragging. The default for delay is 0. @@ -506,7 +506,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement /** * Sets the suggested delay before the menu's PopupMenu - * is popped up or down. Each look and feel (L&F) may determine + * is popped up or down. Each look and feel (L&F) may determine * it's own policy for observing the delay property. In most cases, * the delay is not observed for top level menus or while dragging. * This method is a property of the look and feel code and is used @@ -676,7 +676,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * @param pos an integer specifying the position at which to add the * new menu item * @exception IllegalArgumentException when the value of - * pos < 0 + * pos < 0 */ public void insert(String s, int pos) { if (pos < 0) { @@ -695,7 +695,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * new JMenuitem * @return the new menu item * @exception IllegalArgumentException if the value of - * pos < 0 + * pos < 0 */ public JMenuItem insert(JMenuItem mi, int pos) { if (pos < 0) { @@ -714,7 +714,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * @param pos an integer specifying the position at which to add the * new menu item * @exception IllegalArgumentException if the value of - * pos < 0 + * pos < 0 */ public JMenuItem insert(Action a, int pos) { if (pos < 0) { @@ -735,7 +735,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * @param index an integer specifying the position at which to * insert the menu separator * @exception IllegalArgumentException if the value of - * index < 0 + * index < 0 */ public void insertSeparator(int index) { if (index < 0) { @@ -754,7 +754,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * * @param pos an integer specifying the position * @exception IllegalArgumentException if the value of - * pos < 0 + * pos < 0 * @return the menu item at the specified position; or null * if the item as the specified position is not a menu item */ @@ -811,7 +811,7 @@ public class JMenu extends JMenuItem implements Accessible,MenuElement * * @param pos the position of the item to be removed * @exception IllegalArgumentException if the value of - * pos < 0, or if pos + * pos < 0, or if pos * is greater than the number of menu items */ public void remove(int pos) { diff --git a/jdk/src/share/classes/javax/swing/JMenuBar.java b/jdk/src/share/classes/javax/swing/JMenuBar.java index 8e6683d6f17..f00d4207485 100644 --- a/jdk/src/share/classes/javax/swing/JMenuBar.java +++ b/jdk/src/share/classes/javax/swing/JMenuBar.java @@ -130,9 +130,9 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement } /** - * Sets the L&F object that renders this component. + * Sets the L&F object that renders this component. * - * @param ui the new MenuBarUI L&F object + * @param ui the new MenuBarUI L&F object * @see UIDefaults#getUI * @beaninfo * bound: true @@ -155,7 +155,7 @@ public class JMenuBar extends JComponent implements Accessible,MenuElement /** - * Returns the name of the L&F class that renders this component. + * Returns the name of the L&F class that renders this component. * * @return the string "MenuBarUI" * @see JComponent#getUIClassID diff --git a/jdk/src/share/classes/javax/swing/JTextField.java b/jdk/src/share/classes/javax/swing/JTextField.java index 0e5e9aa4915..d4bc1aa0f6b 100644 --- a/jdk/src/share/classes/javax/swing/JTextField.java +++ b/jdk/src/share/classes/javax/swing/JTextField.java @@ -367,7 +367,7 @@ public class JTextField extends JTextComponent implements SwingConstants { /** * Returns the number of columns in this TextField. * - * @return the number of columns >= 0 + * @return the number of columns >= 0 */ public int getColumns() { return columns; @@ -377,7 +377,7 @@ public class JTextField extends JTextComponent implements SwingConstants { * Sets the number of columns in this TextField, * and then invalidate the layout. * - * @param columns the number of columns >= 0 + * @param columns the number of columns >= 0 * @exception IllegalArgumentException if columns * is less than 0 * @beaninfo @@ -402,7 +402,7 @@ public class JTextField extends JTextComponent implements SwingConstants { * character m for the font used. This method can be * redefined to be some alternative amount * - * @return the column width >= 1 + * @return the column width >= 1 */ protected int getColumnWidth() { if (columnWidth == 0) { @@ -744,7 +744,7 @@ public class JTextField extends JTextComponent implements SwingConstants { /** * Gets the scroll offset, in pixels. * - * @return the offset >= 0 + * @return the offset >= 0 */ public int getScrollOffset() { return visibility.getValue(); @@ -753,7 +753,7 @@ public class JTextField extends JTextComponent implements SwingConstants { /** * Sets the scroll offset, in pixels. * - * @param scrollOffset the offset >= 0 + * @param scrollOffset the offset >= 0 */ public void setScrollOffset(int scrollOffset) { visibility.setValue(scrollOffset); From e6f691aeb27ab956b3867d4151ae69d1c77dab62 Mon Sep 17 00:00:00 2001 From: Naoto Sato Date: Thu, 7 Nov 2013 10:03:38 -0800 Subject: [PATCH 036/145] 8027930: ResourceBundle test failures in fr locale Reviewed-by: smarks --- .../ResourceBundle/ResourceBundleTest.java | 9 ++++--- .../TestGetBaseBundleName.java | 26 ++++++++++--------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/jdk/test/java/util/ResourceBundle/ResourceBundleTest.java b/jdk/test/java/util/ResourceBundle/ResourceBundleTest.java index 47cc1992713..215d92ab41e 100644 --- a/jdk/test/java/util/ResourceBundle/ResourceBundleTest.java +++ b/jdk/test/java/util/ResourceBundle/ResourceBundleTest.java @@ -22,7 +22,7 @@ */ /* @test - @bug 4049325 4073127 4083270 4106034 4108126 + @bug 4049325 4073127 4083270 4106034 4108126 8027930 @summary test Resource Bundle @build TestResource TestResource_de TestResource_fr TestResource_fr_CH @build TestResource_it FakeTestResource @@ -63,6 +63,7 @@ import java.text.*; import java.util.*; +import java.util.ResourceBundle.Control; import java.io.*; public class ResourceBundleTest extends RBTestFmwk { @@ -134,7 +135,8 @@ public class ResourceBundleTest extends RBTestFmwk { // load up the resource and check to make sure we got the right class // (we don't define be_BY or be, so we fall back on the root default) ResourceBundle bundle = ResourceBundle.getBundle("TestResource", - new Locale("be", "BY")); + new Locale("be", "BY"), + Control.getNoFallbackControl(Control.FORMAT_DEFAULT)); if (!bundle.getClass().getName().equals("TestResource")) errln("Expected TestResource, got " + bundle.getClass().getName()); @@ -268,7 +270,8 @@ public class ResourceBundleTest extends RBTestFmwk { // try to find TestResource_iw_IL, which doesn't exist. Should get root locale // as its locale test = ResourceBundle.getBundle("TestResource", - new Locale("iw", "IL", "")); + new Locale("iw", "IL", ""), + Control.getNoFallbackControl(Control.FORMAT_DEFAULT)); locale = test.getLocale(); if (!(locale.getLanguage().equals("")) || !(locale.getCountry().equals(""))) errln("Actual locale for TestResource_iw_IL should have been the root locale, got " diff --git a/jdk/test/java/util/ResourceBundle/getBaseBundleName/TestGetBaseBundleName.java b/jdk/test/java/util/ResourceBundle/getBaseBundleName/TestGetBaseBundleName.java index aca4017c7d2..ae59518d7d3 100644 --- a/jdk/test/java/util/ResourceBundle/getBaseBundleName/TestGetBaseBundleName.java +++ b/jdk/test/java/util/ResourceBundle/getBaseBundleName/TestGetBaseBundleName.java @@ -29,7 +29,7 @@ import java.util.ResourceBundle; /** * @test - * @bug 4814565 + * @bug 4814565 8027930 * @summary tests ResourceBundle.getBaseBundleName(); * @build TestGetBaseBundleName resources.ListBundle resources.ListBundle_fr * @run main TestGetBaseBundleName @@ -52,18 +52,20 @@ public class TestGetBaseBundleName { PROPERTY_BUNDLE_NAME, LIST_BUNDLE_NAME }) { - ResourceBundle bundle = ResourceBundle.getBundle(baseName); - System.out.println(getBaseName(bundle)); - if (!Locale.ROOT.equals(bundle.getLocale())) { - throw new RuntimeException("Unexpected locale: " - + bundle.getLocale()); - } - if (!baseName.equals(getBaseName(bundle))) { - throw new RuntimeException("Unexpected base name: " - + getBaseName(bundle)); - } - Locale.setDefault(Locale.FRENCH); try { + Locale.setDefault(Locale.US); + ResourceBundle bundle = ResourceBundle.getBundle(baseName); + System.out.println(getBaseName(bundle)); + if (!Locale.ROOT.equals(bundle.getLocale())) { + throw new RuntimeException("Unexpected locale: " + + bundle.getLocale()); + } + if (!baseName.equals(getBaseName(bundle))) { + throw new RuntimeException("Unexpected base name: " + + getBaseName(bundle)); + } + + Locale.setDefault(Locale.FRENCH); ResourceBundle bundle_fr = ResourceBundle.getBundle(baseName); if (!Locale.FRENCH.equals(bundle_fr.getLocale())) { throw new RuntimeException("Unexpected locale: " From 8d19ef756e3b7f849ec81887ceb2c5994da6d486 Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Thu, 7 Nov 2013 20:56:44 -0500 Subject: [PATCH 037/145] 8024458: DataInput.readDouble refers to "readlong" instead of "readLong" Fix the typo Reviewed-by: lancea, chegar, dxu --- jdk/src/share/classes/java/io/DataInput.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/src/share/classes/java/io/DataInput.java b/jdk/src/share/classes/java/io/DataInput.java index c61aeb58eda..3e0f0ddbd22 100644 --- a/jdk/src/share/classes/java/io/DataInput.java +++ b/jdk/src/share/classes/java/io/DataInput.java @@ -444,7 +444,7 @@ interface DataInput { * a {@code double} value. It does this * by first constructing a {@code long} * value in exactly the manner - * of the {@code readlong} + * of the {@code readLong} * method, then converting this {@code long} * value to a {@code double} in exactly * the manner of the method {@code Double.longBitsToDouble}. From 2f6d30beca200b2eda9883492087169508de8c17 Mon Sep 17 00:00:00 2001 From: Yong Jeffrey Huang Date: Thu, 7 Nov 2013 22:30:06 -0800 Subject: [PATCH 038/145] 8027695: There should be a space before % sign in Swedish locale Reviewed-by: naoto --- .../share/classes/sun/text/resources/sv/FormatData_sv_SE.java | 2 +- jdk/test/sun/text/resources/LocaleData | 3 +++ jdk/test/sun/text/resources/LocaleDataTest.java | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/jdk/src/share/classes/sun/text/resources/sv/FormatData_sv_SE.java b/jdk/src/share/classes/sun/text/resources/sv/FormatData_sv_SE.java index a9a7881a607..f9304122e27 100644 --- a/jdk/src/share/classes/sun/text/resources/sv/FormatData_sv_SE.java +++ b/jdk/src/share/classes/sun/text/resources/sv/FormatData_sv_SE.java @@ -52,7 +52,7 @@ public class FormatData_sv_SE extends ParallelListResourceBundle { new String[] { "#,##0.###;-#,##0.###", // decimal pattern "#,##0.00 \u00A4;-#,##0.00 \u00A4", // currency pattern - "#,##0%" // percent pattern + "#,##0 %" // percent pattern } }, }; diff --git a/jdk/test/sun/text/resources/LocaleData b/jdk/test/sun/text/resources/LocaleData index 1fd2076a114..fc090c442ad 100644 --- a/jdk/test/sun/text/resources/LocaleData +++ b/jdk/test/sun/text/resources/LocaleData @@ -7687,3 +7687,6 @@ LocaleNames/ko/PT=\ud3ec\ub974\ud22c\uce7c # bug 6931564 LocaleNames/sv/ZA=Sydafrika + +# bug 8027695 +FormatData/sv_SE/NumberPatterns/2=#,##0 % diff --git a/jdk/test/sun/text/resources/LocaleDataTest.java b/jdk/test/sun/text/resources/LocaleDataTest.java index 8918f1a1513..567e8aefb0b 100644 --- a/jdk/test/sun/text/resources/LocaleDataTest.java +++ b/jdk/test/sun/text/resources/LocaleDataTest.java @@ -35,7 +35,7 @@ * 6645405 6650730 6910489 6573250 6870908 6585666 6716626 6914413 6916787 * 6919624 6998391 7019267 7020960 7025837 7020583 7036905 7066203 7101495 * 7003124 7085757 7028073 7171028 7189611 8000983 7195759 8004489 8006509 - * 7114053 7074882 7040556 8013836 8021121 6192407 6931564 + * 7114053 7074882 7040556 8013836 8021121 6192407 6931564 8027695 * @summary Verify locale data * */ From f0a88e10f3eb0033bc3f01f705cfe756c668a891 Mon Sep 17 00:00:00 2001 From: Jaroslav Bachorik Date: Fri, 8 Nov 2013 08:47:39 +0100 Subject: [PATCH 039/145] 8007984: Null pointer dereference in jdk/linux-amd64/democlasses/demo/jvmti/heapTracker/src/java_crw_demo.c Reviewed-by: dholmes --- jdk/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c b/jdk/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c index cd6d1040f50..73413fd4fa6 100644 --- a/jdk/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c +++ b/jdk/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c @@ -263,8 +263,8 @@ fatal_error(CrwClassImage *ci, const char *message, const char *file, int line) /* Normal operation should NEVER reach here */ /* NO CRW FATAL ERROR HANDLER! */ (void)fprintf(stderr, "CRW: %s [%s:%d]\n", message, file, line); - abort(); } + abort(); } #if defined(DEBUG) || !defined(NDEBUG) From d876d630e33ff97fc8565a95dabcbd7ebb9fd8f5 Mon Sep 17 00:00:00 2001 From: Katja Kantserova Date: Thu, 7 Nov 2013 16:55:39 +0100 Subject: [PATCH 040/145] 8027752: sun/tools/jstatd/TestJstatdExternalRegistry.java: java.lang.SecurityException: attempt to add a Permission to a readonly Permissions object Reviewed-by: sla, jbachorik --- jdk/test/sun/tools/jstatd/JstatdTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jdk/test/sun/tools/jstatd/JstatdTest.java b/jdk/test/sun/tools/jstatd/JstatdTest.java index 9876a54f093..1a11788e09f 100644 --- a/jdk/test/sun/tools/jstatd/JstatdTest.java +++ b/jdk/test/sun/tools/jstatd/JstatdTest.java @@ -291,6 +291,8 @@ public final class JstatdTest { launcher.addVMArg("-XX:+UsePerfData"); String testSrc = System.getProperty("test.src"); File policy = new File(testSrc, "all.policy"); + assertTrue(policy.exists() && policy.isFile(), + "Security policy " + policy.getAbsolutePath() + " does not exist or not a file"); launcher.addVMArg("-Djava.security.policy=" + policy.getAbsolutePath()); if (port != null) { launcher.addToolArg("-p"); From 9fddd09d643ea6b90bb1930cc73ae53b9eaec0be Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Thu, 7 Nov 2013 20:48:38 -0800 Subject: [PATCH 041/145] 8027943: serial version of com.sun.corba.se.spi.orbutil.proxy.CompositeInvocationHandlerImpl changed in 7u45 Reviewed-by: msheppar, alanb, lancea --- .../se/spi/orbutil/proxy/CompositeInvocationHandlerImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/corba/src/share/classes/com/sun/corba/se/spi/orbutil/proxy/CompositeInvocationHandlerImpl.java b/corba/src/share/classes/com/sun/corba/se/spi/orbutil/proxy/CompositeInvocationHandlerImpl.java index 91aacd5afae..271682a9f61 100644 --- a/corba/src/share/classes/com/sun/corba/se/spi/orbutil/proxy/CompositeInvocationHandlerImpl.java +++ b/corba/src/share/classes/com/sun/corba/se/spi/orbutil/proxy/CompositeInvocationHandlerImpl.java @@ -89,4 +89,6 @@ public class CompositeInvocationHandlerImpl implements sm.checkPermission(perm); } } + + private static final long serialVersionUID = 4571178305984833743L; } From 505ac76763b91ac8963edee314aa18ec1285f728 Mon Sep 17 00:00:00 2001 From: Vladimir Ivanov Date: Fri, 8 Nov 2013 01:13:11 -0800 Subject: [PATCH 042/145] 8023037: Race between ciEnv::register_method and nmethod::make_not_entrant_or_zombie Reviewed-by: kvn, iveresov --- .../src/cpu/sparc/vm/sharedRuntime_sparc.cpp | 12 ----- hotspot/src/share/vm/ci/ciEnv.cpp | 19 ++------ hotspot/src/share/vm/code/nmethod.cpp | 46 +++++++++---------- hotspot/src/share/vm/runtime/globals.hpp | 3 -- 4 files changed, 28 insertions(+), 52 deletions(-) diff --git a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp index 62ff0f23b2b..4b6b1c7c00d 100644 --- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp +++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp @@ -1002,18 +1002,6 @@ void AdapterGenerator::gen_i2c_adapter( // and the vm will find there should this case occur. Address callee_target_addr(G2_thread, JavaThread::callee_target_offset()); __ st_ptr(G5_method, callee_target_addr); - - if (StressNonEntrant) { - // Open a big window for deopt failure - __ save_frame(0); - __ mov(G0, L0); - Label loop; - __ bind(loop); - __ sub(L0, 1, L0); - __ br_null_short(L0, Assembler::pt, loop); - __ restore(); - } - __ jmpl(G3, 0, G0); __ delayed()->nop(); } diff --git a/hotspot/src/share/vm/ci/ciEnv.cpp b/hotspot/src/share/vm/ci/ciEnv.cpp index 7e61a849b0f..f6c8949488e 100644 --- a/hotspot/src/share/vm/ci/ciEnv.cpp +++ b/hotspot/src/share/vm/ci/ciEnv.cpp @@ -935,7 +935,9 @@ void ciEnv::register_method(ciMethod* target, // Prevent SystemDictionary::add_to_hierarchy from running // and invalidating our dependencies until we install this method. + // No safepoints are allowed. Otherwise, class redefinition can occur in between. MutexLocker ml(Compile_lock); + No_Safepoint_Verifier nsv; // Change in Jvmti state may invalidate compilation. if (!failing() && @@ -1001,16 +1003,6 @@ void ciEnv::register_method(ciMethod* target, // Free codeBlobs code_buffer->free_blob(); - // stress test 6243940 by immediately making the method - // non-entrant behind the system's back. This has serious - // side effects on the code cache and is not meant for - // general stress testing - if (nm != NULL && StressNonEntrant) { - MutexLockerEx pl(Patching_lock, Mutex::_no_safepoint_check_flag); - NativeJump::patch_verified_entry(nm->entry_point(), nm->verified_entry_point(), - SharedRuntime::get_handle_wrong_method_stub()); - } - if (nm == NULL) { // The CodeCache is full. Print out warning and disable compilation. record_failure("code cache is full"); @@ -1036,11 +1028,11 @@ void ciEnv::register_method(ciMethod* target, char *method_name = method->name_and_sig_as_C_string(); tty->print_cr("Replacing method %s", method_name); } - if (old != NULL ) { + if (old != NULL) { old->make_not_entrant(); } } - if (TraceNMethodInstalls ) { + if (TraceNMethodInstalls) { ResourceMark rm; char *method_name = method->name_and_sig_as_C_string(); ttyLocker ttyl; @@ -1051,7 +1043,7 @@ void ciEnv::register_method(ciMethod* target, // Allow the code to be executed method->set_code(method, nm); } else { - if (TraceNMethodInstalls ) { + if (TraceNMethodInstalls) { ResourceMark rm; char *method_name = method->name_and_sig_as_C_string(); ttyLocker ttyl; @@ -1061,7 +1053,6 @@ void ciEnv::register_method(ciMethod* target, entry_bci); } method->method_holder()->add_osr_nmethod(nm); - } } } diff --git a/hotspot/src/share/vm/code/nmethod.cpp b/hotspot/src/share/vm/code/nmethod.cpp index 5d74db0d38b..eca6314fe2d 100644 --- a/hotspot/src/share/vm/code/nmethod.cpp +++ b/hotspot/src/share/vm/code/nmethod.cpp @@ -618,21 +618,18 @@ nmethod* nmethod::new_nmethod(methodHandle method, // record this nmethod as dependent on this klass InstanceKlass::cast(klass)->add_dependent_nmethod(nm); } - } - NOT_PRODUCT(if (nm != NULL) nmethod_stats.note_nmethod(nm)); - if (PrintAssembly && nm != NULL) { - Disassembler::decode(nm); + NOT_PRODUCT(nmethod_stats.note_nmethod(nm)); + if (PrintAssembly) { + Disassembler::decode(nm); + } } } - - // verify nmethod - debug_only(if (nm) nm->verify();) // might block - + // Do verification and logging outside CodeCache_lock. if (nm != NULL) { + // Safepoints in nmethod::verify aren't allowed because nm hasn't been installed yet. + DEBUG_ONLY(nm->verify();) nm->log_new_nmethod(); } - - // done return nm; } @@ -2395,20 +2392,23 @@ void nmethod::verify() { void nmethod::verify_interrupt_point(address call_site) { - // This code does not work in release mode since - // owns_lock only is available in debug mode. - CompiledIC* ic = NULL; - Thread *cur = Thread::current(); - if (CompiledIC_lock->owner() == cur || - ((cur->is_VM_thread() || cur->is_ConcurrentGC_thread()) && - SafepointSynchronize::is_at_safepoint())) { - ic = CompiledIC_at(this, call_site); - CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops()); - } else { - MutexLocker ml_verify (CompiledIC_lock); - ic = CompiledIC_at(this, call_site); + // Verify IC only when nmethod installation is finished. + bool is_installed = (method()->code() == this) // nmethod is in state 'alive' and installed + || !this->is_in_use(); // nmethod is installed, but not in 'alive' state + if (is_installed) { + Thread *cur = Thread::current(); + if (CompiledIC_lock->owner() == cur || + ((cur->is_VM_thread() || cur->is_ConcurrentGC_thread()) && + SafepointSynchronize::is_at_safepoint())) { + CompiledIC_at(this, call_site); + CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops()); + } else { + MutexLocker ml_verify (CompiledIC_lock); + CompiledIC_at(this, call_site); + } } - PcDesc* pd = pc_desc_at(ic->end_of_call()); + + PcDesc* pd = pc_desc_at(nativeCall_at(call_site)->return_address()); assert(pd != NULL, "PcDesc must exist"); for (ScopeDesc* sd = new ScopeDesc(this, pd->scope_decode_offset(), pd->obj_decode_offset(), pd->should_reexecute(), diff --git a/hotspot/src/share/vm/runtime/globals.hpp b/hotspot/src/share/vm/runtime/globals.hpp index 2fe5420be39..c3d98153ca9 100644 --- a/hotspot/src/share/vm/runtime/globals.hpp +++ b/hotspot/src/share/vm/runtime/globals.hpp @@ -3019,9 +3019,6 @@ class CommandLineFlags { notproduct(intx, ZombieALotInterval, 5, \ "Number of exits until ZombieALot kicks in") \ \ - develop(bool, StressNonEntrant, false, \ - "Mark nmethods non-entrant at registration") \ - \ diagnostic(intx, MallocVerifyInterval, 0, \ "If non-zero, verify C heap after every N calls to " \ "malloc/realloc/free") \ From 9e336968751f16d71f5f2fa0637f9dbb436951ea Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Fri, 8 Nov 2013 14:09:18 +0400 Subject: [PATCH 043/145] 8027648: Type of overridden property is resolved incorrectly Reviewed-by: alexsch --- .../java/beans/IndexedPropertyDescriptor.java | 5 +- .../classes/java/beans/Introspector.java | 9 +- .../swing/tree/DefaultMutableTreeNode.java | 2 + .../java/beans/Introspector/Test8027648.java | 97 +++++++++++++++++++ .../java/beans/Introspector/Test8027905.java | 71 ++++++++++++++ 5 files changed, 179 insertions(+), 5 deletions(-) create mode 100644 jdk/test/java/beans/Introspector/Test8027648.java create mode 100644 jdk/test/java/beans/Introspector/Test8027905.java diff --git a/jdk/src/share/classes/java/beans/IndexedPropertyDescriptor.java b/jdk/src/share/classes/java/beans/IndexedPropertyDescriptor.java index 866d35ba56c..f38c35774fe 100644 --- a/jdk/src/share/classes/java/beans/IndexedPropertyDescriptor.java +++ b/jdk/src/share/classes/java/beans/IndexedPropertyDescriptor.java @@ -373,12 +373,13 @@ public class IndexedPropertyDescriptor extends PropertyDescriptor { if (params[0] != Integer.TYPE) { throw new IntrospectionException("non int index to indexed write method"); } - if (indexedPropertyType != null && indexedPropertyType != params[1]) { + if (indexedPropertyType == null || params[1].isAssignableFrom(indexedPropertyType)) { + indexedPropertyType = params[1]; + } else if (!indexedPropertyType.isAssignableFrom(params[1])) { throw new IntrospectionException( "type mismatch between indexed read and indexed write methods: " + getName()); } - indexedPropertyType = params[1]; } Class propertyType = getPropertyType(); if (propertyType != null && (!propertyType.isArray() || diff --git a/jdk/src/share/classes/java/beans/Introspector.java b/jdk/src/share/classes/java/beans/Introspector.java index fc8b21856d6..61745dd9efa 100644 --- a/jdk/src/share/classes/java/beans/Introspector.java +++ b/jdk/src/share/classes/java/beans/Introspector.java @@ -684,8 +684,7 @@ public class Introspector { ipd = (IndexedPropertyDescriptor)pd; if (ipd.getIndexedWriteMethod() != null) { if (igpd != null) { - if (igpd.getIndexedPropertyType() - == ipd.getIndexedPropertyType()) { + if (isAssignable(igpd.getIndexedPropertyType(), ipd.getIndexedPropertyType())) { if (ispd != null) { ispd = new IndexedPropertyDescriptor(ispd, ipd); } else { @@ -703,7 +702,7 @@ public class Introspector { } else { if (pd.getWriteMethod() != null) { if (gpd != null) { - if (gpd.getPropertyType() == pd.getPropertyType()) { + if (isAssignable(gpd.getPropertyType(), pd.getPropertyType())) { if (spd != null) { spd = new PropertyDescriptor(spd, pd); } else { @@ -806,6 +805,10 @@ public class Introspector { } } + private static boolean isAssignable(Class current, Class candidate) { + return current == null ? candidate == null : current.isAssignableFrom(candidate); + } + /** * Adds the property descriptor to the indexedproperty descriptor only if the * types are the same. diff --git a/jdk/src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java b/jdk/src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java index 5e776a0cd81..17840426075 100644 --- a/jdk/src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java +++ b/jdk/src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java @@ -26,6 +26,7 @@ package javax.swing.tree; // ISSUE: this class depends on nothing in AWT -- move to java.util? +import java.beans.Transient; import java.io.*; import java.util.*; @@ -215,6 +216,7 @@ public class DefaultMutableTreeNode implements Cloneable, * * @param newParent this node's new parent */ + @Transient public void setParent(MutableTreeNode newParent) { parent = newParent; } diff --git a/jdk/test/java/beans/Introspector/Test8027648.java b/jdk/test/java/beans/Introspector/Test8027648.java new file mode 100644 index 00000000000..972ef788e9d --- /dev/null +++ b/jdk/test/java/beans/Introspector/Test8027648.java @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.beans.IndexedPropertyDescriptor; +import java.beans.PropertyDescriptor; + +/* + * @test + * @bug 8027648 + * @summary Tests overridden getter and overloaded setter + * @author Sergey Malenkov + */ + +public class Test8027648 { + + public static void main(String[] args) { + test(false); + test(true); + } + + private static void test(boolean indexed) { + Class parent = getPropertyType(BaseBean.class, indexed); + Class child = getPropertyType(MyBean.class, indexed); + if (parent.equals(child) || !parent.isAssignableFrom(child)) { + throw new Error("the child property type is not override the parent property type"); + } + } + + private static Class getPropertyType(Class type, boolean indexed) { + PropertyDescriptor pd = BeanUtils.findPropertyDescriptor(type, indexed ? "index" : "value"); + if (pd instanceof IndexedPropertyDescriptor) { + IndexedPropertyDescriptor ipd = (IndexedPropertyDescriptor) pd; + return ipd.getIndexedPropertyType(); + } + return pd.getPropertyType(); + } + + public static class BaseBean { + private Object value; + + public Object getValue() { + return this.value; + } + + public void setValue(Object value) { + this.value = value; + } + + public Object getIndex(int index) { + return getValue(); + } + + public void setIndex(int index, Object value) { + setValue(value); + } + } + + public static class MyBean extends BaseBean { + @Override + public String getValue() { + return (String) super.getValue(); + } + + public void setValue(String value) { + setValue((Object) value); + } + + @Override + public String getIndex(int index) { + return getValue(); + } + + public void setIndex(int index, String value) { + setValue(value); + } + } +} diff --git a/jdk/test/java/beans/Introspector/Test8027905.java b/jdk/test/java/beans/Introspector/Test8027905.java new file mode 100644 index 00000000000..6c91694b4df --- /dev/null +++ b/jdk/test/java/beans/Introspector/Test8027905.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.beans.PropertyDescriptor; + +/* + * @test + * @bug 8027905 + * @summary Tests that GC does not affect a property type + * @author Sergey Malenkov + */ + +public class Test8027905 { + public static void main(String[] args) { + PropertyDescriptor pd = BeanUtils.getPropertyDescriptor(Sub.class, "foo"); + Class type = pd.getPropertyType(); + + int[] array = new int[10]; + while (array != null) { + try { + array = new int[array.length + array.length]; + } + catch (OutOfMemoryError error) { + array = null; + } + } + if (type != pd.getPropertyType()) { + throw new Error("property type is changed"); + } + } + + public static class Super { + public T getFoo() { + return null; + } + + public void setFoo(T t) { + } + } + + public static class Sub extends Super { + @Override + public String getFoo() { + return null; + } + + @Override + public void setFoo(String t) { + } + } +} From e2ef3e89e7aab4f2a5f76ca31829c79cc234f118 Mon Sep 17 00:00:00 2001 From: Jon Masamitsu Date: Fri, 8 Nov 2013 06:14:21 -0800 Subject: [PATCH 044/145] 8024483: assertion failure: (!mirror_alive || loader_alive) failed: Reviewed-by: brutisso, tschatzl, mgerdin --- .../concurrentMarkSweep/concurrentMarkSweepGeneration.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp index 97437bfafe2..ffe87d57c8d 100644 --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp @@ -2524,6 +2524,9 @@ void CMSCollector::collect_in_foreground(bool clear_all_soft_refs, GCCause::Caus // Snapshot the soft reference policy to be used in this collection cycle. ref_processor()->setup_policy(clear_all_soft_refs); + // Decide if class unloading should be done + update_should_unload_classes(); + bool init_mark_was_synchronous = false; // until proven otherwise while (_collectorState != Idling) { if (TraceCMSState) { From 4e0a88f82a9293b7a64725028dcd9ee2a6a9b8e2 Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Fri, 8 Nov 2013 07:53:57 -0800 Subject: [PATCH 045/145] 8027351: (ref) Private finalize method invoked in preference to protected superclass method Reviewed-by: alanb, dholmes, mr, plevart, psandoz --- jdk/makefiles/lib/CoreLibraries.gmk | 1 - jdk/makefiles/mapfiles/libjava/mapfile-vers | 1 - jdk/makefiles/mapfiles/libjava/reorder-sparc | 1 - .../mapfiles/libjava/reorder-sparcv9 | 1 - jdk/makefiles/mapfiles/libjava/reorder-x86 | 1 - jdk/src/share/classes/java/lang/System.java | 3 + .../classes/java/lang/ref/Finalizer.java | 44 +++-- .../classes/sun/misc/JavaLangAccess.java | 5 + jdk/src/share/classes/sun/misc/VM.java | 17 +- jdk/test/java/lang/ref/FinalizeOverride.java | 167 ++++++++++++++++++ 10 files changed, 223 insertions(+), 18 deletions(-) create mode 100644 jdk/test/java/lang/ref/FinalizeOverride.java diff --git a/jdk/makefiles/lib/CoreLibraries.gmk b/jdk/makefiles/lib/CoreLibraries.gmk index 29c1d5fc08a..b773af13fda 100644 --- a/jdk/makefiles/lib/CoreLibraries.gmk +++ b/jdk/makefiles/lib/CoreLibraries.gmk @@ -115,7 +115,6 @@ BUILD_LIBRARIES += $(BUILD_LIBVERIFY) LIBJAVA_SRC_DIRS := $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/lang \ $(JDK_TOPDIR)/src/share/native/java/lang \ - $(JDK_TOPDIR)/src/share/native/java/lang/ref \ $(JDK_TOPDIR)/src/share/native/java/lang/reflect \ $(JDK_TOPDIR)/src/share/native/java/io \ $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/io \ diff --git a/jdk/makefiles/mapfiles/libjava/mapfile-vers b/jdk/makefiles/mapfiles/libjava/mapfile-vers index 7b4d5472b14..d2d8067395c 100644 --- a/jdk/makefiles/mapfiles/libjava/mapfile-vers +++ b/jdk/makefiles/mapfiles/libjava/mapfile-vers @@ -140,7 +140,6 @@ SUNWprivate_1.1 { Java_java_lang_Double_doubleToRawLongBits; Java_java_lang_reflect_Proxy_defineClass0; Java_java_lang_Shutdown_runAllFinalizers; - Java_java_lang_ref_Finalizer_invokeFinalizeMethod; Java_java_lang_Float_intBitsToFloat; Java_java_lang_Float_floatToRawIntBits; Java_java_lang_StrictMath_IEEEremainder; diff --git a/jdk/makefiles/mapfiles/libjava/reorder-sparc b/jdk/makefiles/mapfiles/libjava/reorder-sparc index 16573052576..4a5cbf45018 100644 --- a/jdk/makefiles/mapfiles/libjava/reorder-sparc +++ b/jdk/makefiles/mapfiles/libjava/reorder-sparc @@ -88,7 +88,6 @@ text: .text%Java_java_lang_Throwable_getStackTraceElement; text: .text%throwFileNotFoundException; text: .text%JNU_NotifyAll; # Test LoadFrame -text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod; text: .text%JNU_CallMethodByName; text: .text%JNU_CallMethodByNameV; text: .text%Java_java_io_UnixFileSystem_createDirectory; diff --git a/jdk/makefiles/mapfiles/libjava/reorder-sparcv9 b/jdk/makefiles/mapfiles/libjava/reorder-sparcv9 index fe80fca8b59..81cbfcb2410 100644 --- a/jdk/makefiles/mapfiles/libjava/reorder-sparcv9 +++ b/jdk/makefiles/mapfiles/libjava/reorder-sparcv9 @@ -78,7 +78,6 @@ text: .text%writeBytes; text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2; text: .text%JNU_GetEnv; text: .text%Java_java_io_UnixFileSystem_checkAccess; -text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod; text: .text%Java_java_lang_reflect_Array_newArray; text: .text%Java_java_lang_Throwable_getStackTraceDepth; text: .text%Java_java_lang_Throwable_getStackTraceElement; diff --git a/jdk/makefiles/mapfiles/libjava/reorder-x86 b/jdk/makefiles/mapfiles/libjava/reorder-x86 index 839ee50caa8..1c971b80eda 100644 --- a/jdk/makefiles/mapfiles/libjava/reorder-x86 +++ b/jdk/makefiles/mapfiles/libjava/reorder-x86 @@ -78,7 +78,6 @@ text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_Pri text: .text%JNU_GetEnv; text: .text%Java_java_io_UnixFileSystem_checkAccess; text: .text%Java_sun_reflect_NativeMethodAccessorImpl_invoke0; -text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod; text: .text%Java_java_io_FileInputStream_available; text: .text%Java_java_lang_reflect_Array_newArray; text: .text%Java_java_lang_Throwable_getStackTraceDepth; diff --git a/jdk/src/share/classes/java/lang/System.java b/jdk/src/share/classes/java/lang/System.java index f68a5401704..69d1d0fe1ef 100644 --- a/jdk/src/share/classes/java/lang/System.java +++ b/jdk/src/share/classes/java/lang/System.java @@ -1263,6 +1263,9 @@ public final class System { public Thread newThreadWithAcc(Runnable target, AccessControlContext acc) { return new Thread(target, acc); } + public void invokeFinalize(Object o) throws Throwable { + o.finalize(); + } }); } } diff --git a/jdk/src/share/classes/java/lang/ref/Finalizer.java b/jdk/src/share/classes/java/lang/ref/Finalizer.java index 2be6466931b..f37b3e79b9c 100644 --- a/jdk/src/share/classes/java/lang/ref/Finalizer.java +++ b/jdk/src/share/classes/java/lang/ref/Finalizer.java @@ -27,17 +27,14 @@ package java.lang.ref; import java.security.PrivilegedAction; import java.security.AccessController; - +import sun.misc.JavaLangAccess; +import sun.misc.SharedSecrets; +import sun.misc.VM; final class Finalizer extends FinalReference { /* Package-private; must be in same package as the Reference class */ - /* A native method that invokes an arbitrary object's finalize method is - required since the finalize method is protected - */ - static native void invokeFinalizeMethod(Object o) throws Throwable; - private static ReferenceQueue queue = new ReferenceQueue<>(); private static Finalizer unfinalized = null; private static final Object lock = new Object(); @@ -90,7 +87,7 @@ final class Finalizer extends FinalReference { /* Package-private; must new Finalizer(finalizee); } - private void runFinalizer() { + private void runFinalizer(JavaLangAccess jla) { synchronized (this) { if (hasBeenFinalized()) return; remove(); @@ -98,7 +95,8 @@ final class Finalizer extends FinalReference { /* Package-private; must try { Object finalizee = this.get(); if (finalizee != null && !(finalizee instanceof java.lang.Enum)) { - invokeFinalizeMethod(finalizee); + jla.invokeFinalize(finalizee); + /* Clear stack slot containing this variable, to decrease the chances of false retention with a conservative GC */ finalizee = null; @@ -141,16 +139,21 @@ final class Finalizer extends FinalReference { /* Package-private; must /* Called by Runtime.runFinalization() */ static void runFinalization() { + if (!VM.isBooted()) { + return; + } + forkSecondaryFinalizer(new Runnable() { private volatile boolean running; public void run() { if (running) return; + final JavaLangAccess jla = SharedSecrets.getJavaLangAccess(); running = true; for (;;) { Finalizer f = (Finalizer)queue.poll(); if (f == null) break; - f.runFinalizer(); + f.runFinalizer(jla); } } }); @@ -158,11 +161,16 @@ final class Finalizer extends FinalReference { /* Package-private; must /* Invoked by java.lang.Shutdown */ static void runAllFinalizers() { + if (!VM.isBooted()) { + return; + } + forkSecondaryFinalizer(new Runnable() { private volatile boolean running; public void run() { if (running) return; + final JavaLangAccess jla = SharedSecrets.getJavaLangAccess(); running = true; for (;;) { Finalizer f; @@ -171,7 +179,7 @@ final class Finalizer extends FinalReference { /* Package-private; must if (f == null) break; unfinalized = f.next; } - f.runFinalizer(); + f.runFinalizer(jla); }}}); } @@ -183,13 +191,25 @@ final class Finalizer extends FinalReference { /* Package-private; must public void run() { if (running) return; + + // Finalizer thread starts before System.initializeSystemClass + // is called. Wait until JavaLangAccess is available + while (!VM.isBooted()) { + // delay until VM completes initialization + try { + VM.awaitBooted(); + } catch (InterruptedException x) { + // ignore and continue + } + } + final JavaLangAccess jla = SharedSecrets.getJavaLangAccess(); running = true; for (;;) { try { Finalizer f = (Finalizer)queue.remove(); - f.runFinalizer(); + f.runFinalizer(jla); } catch (InterruptedException x) { - continue; + // ignore and continue } } } diff --git a/jdk/src/share/classes/sun/misc/JavaLangAccess.java b/jdk/src/share/classes/sun/misc/JavaLangAccess.java index 77126470586..812f88e2098 100644 --- a/jdk/src/share/classes/sun/misc/JavaLangAccess.java +++ b/jdk/src/share/classes/sun/misc/JavaLangAccess.java @@ -127,4 +127,9 @@ public interface JavaLangAccess { * inherited AccessControlContext. */ Thread newThreadWithAcc(Runnable target, AccessControlContext acc); + + /** + * Invokes the finalize method of the given object. + */ + void invokeFinalize(Object o) throws Throwable; } diff --git a/jdk/src/share/classes/sun/misc/VM.java b/jdk/src/share/classes/sun/misc/VM.java index ef4c54f948b..a464305a201 100644 --- a/jdk/src/share/classes/sun/misc/VM.java +++ b/jdk/src/share/classes/sun/misc/VM.java @@ -148,6 +148,7 @@ public class VM { private static volatile boolean booted = false; + private static final Object lock = new Object(); // Invoked by by System.initializeSystemClass just before returning. // Subsystems that are invoked during initialization can check this @@ -155,13 +156,27 @@ public class VM { // application class loader has been set up. // public static void booted() { - booted = true; + synchronized (lock) { + booted = true; + lock.notifyAll(); + } } public static boolean isBooted() { return booted; } + // Waits until VM completes initialization + // + // This method is invoked by the Finalizer thread + public static void awaitBooted() throws InterruptedException { + synchronized (lock) { + while (!booted) { + lock.wait(); + } + } + } + // A user-settable upper limit on the maximum amount of allocatable direct // buffer memory. This value may be changed during VM initialization if // "java" is launched with "-XX:MaxDirectMemorySize=". diff --git a/jdk/test/java/lang/ref/FinalizeOverride.java b/jdk/test/java/lang/ref/FinalizeOverride.java new file mode 100644 index 00000000000..eeb86fe4ab2 --- /dev/null +++ b/jdk/test/java/lang/ref/FinalizeOverride.java @@ -0,0 +1,167 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.concurrent.atomic.AtomicInteger; + +/* @test + * @bug 8027351 + * @summary Basic test of the finalize method + */ + +public class FinalizeOverride { + // finalizedCount is incremented when the finalize method is invoked + private static AtomicInteger finalizedCount = new AtomicInteger(); + + // finalizedSum and privateFinalizedInvoke are used to verify + // the right overrided finalize method is invoked + private static AtomicInteger finalizedSum = new AtomicInteger(); + private static volatile boolean privateFinalizeInvoked = false; + + public static void main(String[] argvs) throws IOException { + patchPrivateFinalize(); + + test(new Base(10), 10); + test(new Subclass(20), 0); + test(new SubSubclass(30), 30); + test(new PublicFinalize(40), 40*100+40); + test(new PrivateFinalize(50), 50); + test(new NoOverride(60), 60); + } + + static void test(Object o, int expected) { + int count = finalizedCount.get(); + int sum = finalizedSum.get(); + privateFinalizeInvoked = false; + + // force GC and finalization + o = null; + while (finalizedCount.get() != (count+1)) { + System.gc(); + System.runFinalization(); + } + + if (privateFinalizeInvoked) { + throw new RuntimeException("private finalize method invoked"); + } + if (finalizedCount.get() != (count+1)) { + throw new RuntimeException("Unexpected count=" + finalizedCount + + " expected=" + (count+1)); + } + if (finalizedSum.get() != (sum+expected)) { + throw new RuntimeException("Unexpected sum=" + finalizedSum + + " prev=" + sum + " value=" + expected); + } + } + + static void patchPrivateFinalize() throws IOException { + // patch the private f_nal_ze method name to "finalize" + String testClasses = System.getProperty("test.classes", "."); + Path p = Paths.get(testClasses, "FinalizeOverride$PrivateFinalize.class"); + byte[] bytes = Files.readAllBytes(p); + int len = "f_nal_ze".length(); + for (int i=0; i < bytes.length-len; i++) { + if (bytes[i] == 'f' && + bytes[i+1] == '_' && + bytes[i+2] == 'n' && + bytes[i+3] == 'a' && + bytes[i+4] == 'l' && + bytes[i+5] == '_' && + bytes[i+6] == 'z' && + bytes[i+7] == 'e') + { + // s%_%i% + bytes[i+1] = 'i'; + bytes[i+5] = 'i'; + break; + } + } + Files.write(p, bytes); + } + + static class Base { + protected int value; + Base(int v) { + this.value = v; + } + int called() { + finalizedSum.addAndGet(value); + return value; + } + protected void finalize() { + System.out.println("Base.finalize() sum += " + called()); + finalizedCount.incrementAndGet(); + } + } + static class PublicFinalize extends Base { + PublicFinalize(int v) { + super(v); + } + public void finalize() { + finalizedSum.addAndGet(value * 100); + System.out.println("PublicFinalize.finalize() sum += " + called() + + "+"+value+"*100"); + finalizedCount.incrementAndGet(); + } + } + static class Subclass extends Base { + Subclass(int v) { + super(v); + } + protected void finalize() { + // no value added to sum + System.out.println("Subclass.finalize() sum += 0"); + finalizedCount.incrementAndGet(); + } + } + static class SubSubclass extends Subclass { + SubSubclass(int v) { + super(v); + } + protected final void finalize() { + finalizedSum.addAndGet(value); + System.out.println("SubSubclass.finalize() sum +=" +value); + finalizedCount.incrementAndGet(); + } + } + static class PrivateFinalize extends Base { + PrivateFinalize(int v) { + super(v); + } + private void f_nal_ze() { + // finalization catches any exception + System.out.println("Error: private finalize invoked!!"); + privateFinalizeInvoked = true; + finalizedCount.incrementAndGet(); + } + } + static class NoOverride extends PrivateFinalize { + NoOverride(int v) { + super(v); + } + } +} From 92076375e91c2966741be6382094467e4f4d21ad Mon Sep 17 00:00:00 2001 From: Tristan Yan Date: Fri, 8 Nov 2013 15:12:30 +0000 Subject: [PATCH 046/145] 8022963: java/net/NetworkInterface/Equals.java fails equality for Windows Teredo Interface Reviewed-by: chegar --- jdk/test/java/net/MulticastSocket/TestInterfaces.java | 6 ++++++ jdk/test/java/net/NetworkInterface/Equals.java | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/jdk/test/java/net/MulticastSocket/TestInterfaces.java b/jdk/test/java/net/MulticastSocket/TestInterfaces.java index 3883ad6b6d1..283cf180f30 100644 --- a/jdk/test/java/net/MulticastSocket/TestInterfaces.java +++ b/jdk/test/java/net/MulticastSocket/TestInterfaces.java @@ -33,6 +33,8 @@ import java.io.IOException; public class TestInterfaces { + static final boolean isWindows = System.getProperty("os.name").startsWith("Windows"); + public static void main(String args[]) throws Exception { int failures = 0; @@ -85,6 +87,10 @@ public class TestInterfaces { continue; } + // JDK-8022963, Skip (Windows) Teredo Tunneling seudo-Interface + if (isWindows && ni.getDisplayName().contains("Teredo")) + continue; + NetworkInterface curr = soc.getNetworkInterface(); if (!curr.equals(ni)) { System.err.println("MulticastSocket.getNetworkInterface returned: " + curr); diff --git a/jdk/test/java/net/NetworkInterface/Equals.java b/jdk/test/java/net/NetworkInterface/Equals.java index 1c33ee835cd..cbf0518fc0b 100644 --- a/jdk/test/java/net/NetworkInterface/Equals.java +++ b/jdk/test/java/net/NetworkInterface/Equals.java @@ -38,6 +38,8 @@ import java.util.HashMap; public class Equals { + static final boolean isWindows = System.getProperty("os.name").startsWith("Windows"); + public static void main(String args[]) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream bufferedOut = new PrintStream(baos); @@ -59,6 +61,11 @@ public class Equals { Enumeration nifs2 = NetworkInterface.getNetworkInterfaces(); while (nifs2.hasMoreElements()) { NetworkInterface ni = nifs2.nextElement(); + + // JDK-8022963, Skip (Windows)Teredo Tunneling seudo-Interface + if (isWindows && ni.getDisplayName().contains("Teredo")) + continue; + NetworkInterface niOrig = nicMap.get(ni.getName()); int h = ni.hashCode(); From 7365de3e2519da3a4213124d39aba233e5a77b96 Mon Sep 17 00:00:00 2001 From: Alejandro Murillo Date: Fri, 8 Nov 2013 07:13:57 -0800 Subject: [PATCH 047/145] 8028061: new hotspot build - hs25-b59 Reviewed-by: jcoomes --- hotspot/make/hotspot_version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hotspot/make/hotspot_version b/hotspot/make/hotspot_version index ef45285a489..cf93d3d576a 100644 --- a/hotspot/make/hotspot_version +++ b/hotspot/make/hotspot_version @@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2013 HS_MAJOR_VER=25 HS_MINOR_VER=0 -HS_BUILD_NUMBER=58 +HS_BUILD_NUMBER=59 JDK_MAJOR_VER=1 JDK_MINOR_VER=8 From 44a19639b30cac7f2a9a4ae982ed2283e85ba92c Mon Sep 17 00:00:00 2001 From: Chris Hegarty Date: Fri, 8 Nov 2013 15:15:48 +0000 Subject: [PATCH 048/145] 8019834: InetAddress.getByName hangs for bad IPv6 literals Reviewed-by: alanb --- jdk/src/share/classes/java/net/InetAddress.java | 14 ++++++++------ jdk/test/java/net/ipv6tests/BadIPv6Addresses.java | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/jdk/src/share/classes/java/net/InetAddress.java b/jdk/src/share/classes/java/net/InetAddress.java index 3bb7249d72a..05e230e7d18 100644 --- a/jdk/src/share/classes/java/net/InetAddress.java +++ b/jdk/src/share/classes/java/net/InetAddress.java @@ -1135,7 +1135,7 @@ class InetAddress implements java.io.Serializable { // see if it is IPv4 address addr = IPAddressUtil.textToNumericFormatV4(host); if (addr == null) { - // see if it is IPv6 address + // This is supposed to be an IPv6 literal // Check if a numeric or string zone id is present int pos; if ((pos=host.indexOf ("%")) != -1) { @@ -1144,7 +1144,9 @@ class InetAddress implements java.io.Serializable { ifname = host.substring (pos+1); } } - addr = IPAddressUtil.textToNumericFormatV6(host); + if ((addr = IPAddressUtil.textToNumericFormatV6(host)) == null) { + throw new UnknownHostException(host + ": invalid IPv6 address"); + } } else if (ipv6Expected) { // Means an IPv4 litteral between brackets! throw new UnknownHostException("["+host+"]"); @@ -1162,10 +1164,10 @@ class InetAddress implements java.io.Serializable { } return ret; } - } else if (ipv6Expected) { - // We were expecting an IPv6 Litteral, but got something else - throw new UnknownHostException("["+host+"]"); - } + } else if (ipv6Expected) { + // We were expecting an IPv6 Litteral, but got something else + throw new UnknownHostException("["+host+"]"); + } return getAllByName0(host, reqAddr, true); } diff --git a/jdk/test/java/net/ipv6tests/BadIPv6Addresses.java b/jdk/test/java/net/ipv6tests/BadIPv6Addresses.java index 5f98cf74b2a..15ad86bb6cd 100644 --- a/jdk/test/java/net/ipv6tests/BadIPv6Addresses.java +++ b/jdk/test/java/net/ipv6tests/BadIPv6Addresses.java @@ -23,7 +23,7 @@ /* * @test - * @bug 4742177 + * @bug 4742177 8019834 * @summary Re-test IPv6 (and specifically MulticastSocket) with latest Linux & USAGI code */ import java.net.*; From 722d25b2ddb51ed9bc2869c2329d9222a54b3a42 Mon Sep 17 00:00:00 2001 From: Alkesey Timofeev Date: Fri, 8 Nov 2013 16:48:21 +0100 Subject: [PATCH 049/145] 8027237: New tests on ReservedSpace/VirtualSpace classes Three tests added: 1) test stressing VirtualSpace by resizing it constantly 2) test running unit tests in several threads 3) test checking protected area in ReservedHeapSpace class Reviewed-by: stefank, zgu --- hotspot/src/share/vm/prims/whitebox.cpp | 111 ++++++++++++++++++ .../runtime/memory/ReadFromNoaccessArea.java | 80 +++++++++++++ .../memory/RunUnitTestsConcurrently.java | 74 ++++++++++++ .../memory/StressVirtualSpaceResize.java | 41 +++++++ .../whitebox/sun/hotspot/WhiteBox.java | 6 + 5 files changed, 312 insertions(+) create mode 100644 hotspot/test/runtime/memory/ReadFromNoaccessArea.java create mode 100644 hotspot/test/runtime/memory/RunUnitTestsConcurrently.java create mode 100644 hotspot/test/runtime/memory/StressVirtualSpaceResize.java diff --git a/hotspot/src/share/vm/prims/whitebox.cpp b/hotspot/src/share/vm/prims/whitebox.cpp index 6f6a2000a3f..5c34c8aae9d 100644 --- a/hotspot/src/share/vm/prims/whitebox.cpp +++ b/hotspot/src/share/vm/prims/whitebox.cpp @@ -53,6 +53,8 @@ #include "compiler/compileBroker.hpp" #include "runtime/compilationPolicy.hpp" +#define SIZE_T_MAX_VALUE ((size_t) -1) + bool WhiteBox::_used = false; WB_ENTRY(jlong, WB_GetObjectAddress(JNIEnv* env, jobject o, jobject obj)) @@ -109,6 +111,112 @@ WB_ENTRY(void, WB_PrintHeapSizes(JNIEnv* env, jobject o)) { } WB_END +#ifndef PRODUCT +// Forward declaration +void TestReservedSpace_test(); +void TestReserveMemorySpecial_test(); +void TestVirtualSpace_test(); +void TestMetaspaceAux_test(); +#endif + +WB_ENTRY(void, WB_RunMemoryUnitTests(JNIEnv* env, jobject o)) +#ifndef PRODUCT + TestReservedSpace_test(); + TestReserveMemorySpecial_test(); + TestVirtualSpace_test(); + TestMetaspaceAux_test(); +#endif +WB_END + +WB_ENTRY(void, WB_ReadFromNoaccessArea(JNIEnv* env, jobject o)) + size_t granularity = os::vm_allocation_granularity(); + ReservedHeapSpace rhs(100 * granularity, granularity, false, NULL); + VirtualSpace vs; + vs.initialize(rhs, 50 * granularity); + + //Check if constraints are complied + if (!( UseCompressedOops && rhs.base() != NULL && + Universe::narrow_oop_base() != NULL && + Universe::narrow_oop_use_implicit_null_checks() )) { + tty->print_cr("WB_ReadFromNoaccessArea method is useless:\n " + "\tUseCompressedOops is %d\n" + "\trhs.base() is "PTR_FORMAT"\n" + "\tUniverse::narrow_oop_base() is "PTR_FORMAT"\n" + "\tUniverse::narrow_oop_use_implicit_null_checks() is %d", + UseCompressedOops, + rhs.base(), + Universe::narrow_oop_base(), + Universe::narrow_oop_use_implicit_null_checks()); + return; + } + tty->print_cr("Reading from no access area... "); + tty->print_cr("*(vs.low_boundary() - rhs.noaccess_prefix() / 2 ) = %c", + *(vs.low_boundary() - rhs.noaccess_prefix() / 2 )); +WB_END + +static jint wb_stress_virtual_space_resize(size_t reserved_space_size, + size_t magnitude, size_t iterations) { + size_t granularity = os::vm_allocation_granularity(); + ReservedHeapSpace rhs(reserved_space_size * granularity, granularity, false, NULL); + VirtualSpace vs; + if (!vs.initialize(rhs, 0)) { + tty->print_cr("Failed to initialize VirtualSpace. Can't proceed."); + return 3; + } + + long seed = os::random(); + tty->print_cr("Random seed is %ld", seed); + os::init_random(seed); + + for (size_t i = 0; i < iterations; i++) { + + // Whether we will shrink or grow + bool shrink = os::random() % 2L == 0; + + // Get random delta to resize virtual space + size_t delta = (size_t)os::random() % magnitude; + + // If we are about to shrink virtual space below zero, then expand instead + if (shrink && vs.committed_size() < delta) { + shrink = false; + } + + // Resizing by delta + if (shrink) { + vs.shrink_by(delta); + } else { + // If expanding fails expand_by will silently return false + vs.expand_by(delta, true); + } + } + return 0; +} + +WB_ENTRY(jint, WB_StressVirtualSpaceResize(JNIEnv* env, jobject o, + jlong reserved_space_size, jlong magnitude, jlong iterations)) + tty->print_cr("reservedSpaceSize="JLONG_FORMAT", magnitude="JLONG_FORMAT", " + "iterations="JLONG_FORMAT"\n", reserved_space_size, magnitude, + iterations); + if (reserved_space_size < 0 || magnitude < 0 || iterations < 0) { + tty->print_cr("One of variables printed above is negative. Can't proceed.\n"); + return 1; + } + + // sizeof(size_t) depends on whether OS is 32bit or 64bit. sizeof(jlong) is + // always 8 byte. That's why we should avoid overflow in case of 32bit platform. + if (sizeof(size_t) < sizeof(jlong)) { + jlong size_t_max_value = (jlong) SIZE_T_MAX_VALUE; + if (reserved_space_size > size_t_max_value || magnitude > size_t_max_value + || iterations > size_t_max_value) { + tty->print_cr("One of variables printed above overflows size_t. Can't proceed.\n"); + return 2; + } + } + + return wb_stress_virtual_space_resize((size_t) reserved_space_size, + (size_t) magnitude, (size_t) iterations); +WB_END + #if INCLUDE_ALL_GCS WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj)) G1CollectedHeap* g1 = G1CollectedHeap::heap(); @@ -445,6 +553,9 @@ static JNINativeMethod methods[] = { {CC"getCompressedOopsMaxHeapSize", CC"()J", (void*)&WB_GetCompressedOopsMaxHeapSize}, {CC"printHeapSizes", CC"()V", (void*)&WB_PrintHeapSizes }, + {CC"runMemoryUnitTests", CC"()V", (void*)&WB_RunMemoryUnitTests}, + {CC"readFromNoaccessArea",CC"()V", (void*)&WB_ReadFromNoaccessArea}, + {CC"stressVirtualSpaceResize",CC"(JJJ)I", (void*)&WB_StressVirtualSpaceResize}, #if INCLUDE_ALL_GCS {CC"g1InConcurrentMark", CC"()Z", (void*)&WB_G1InConcurrentMark}, {CC"g1IsHumongous", CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous }, diff --git a/hotspot/test/runtime/memory/ReadFromNoaccessArea.java b/hotspot/test/runtime/memory/ReadFromNoaccessArea.java new file mode 100644 index 00000000000..1078dd2e4ea --- /dev/null +++ b/hotspot/test/runtime/memory/ReadFromNoaccessArea.java @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @summary Test that touching noaccess area in class ReservedHeapSpace results in SIGSEGV/ACCESS_VIOLATION + * @library /testlibrary /testlibrary/whitebox + * @build ReadFromNoaccessArea + * @run main ClassFileInstaller sun.hotspot.WhiteBox + * @run main ReadFromNoaccessArea + */ + +import com.oracle.java.testlibrary.*; +import sun.hotspot.WhiteBox; + +public class ReadFromNoaccessArea { + + public static void main(String args[]) throws Exception { + if (!Platform.is64bit()) { + System.out.println("ReadFromNoaccessArea tests is useful only on 64bit architecture. Passing silently."); + return; + } + + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( + "-Xbootclasspath/a:.", + "-XX:+UnlockDiagnosticVMOptions", + "-XX:+WhiteBoxAPI", + "-XX:+UseCompressedOops", + "-XX:HeapBaseMinAddress=33G", + DummyClassWithMainTryingToReadFromNoaccessArea.class.getName()); + + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + System.out.println("******* Printing stdout for analysis in case of failure *******"); + System.out.println(output.getStdout()); + System.out.println("******* Printing stderr for analysis in case of failure *******"); + System.out.println(output.getStderr()); + System.out.println("***************************************************************"); + if (output.getStdout() != null && output.getStdout().contains("WB_ReadFromNoaccessArea method is useless")) { + // Test conditions broken. There is no protected page in ReservedHeapSpace in these circumstances. Silently passing test. + return; + } + if (Platform.isWindows()) { + output.shouldContain("EXCEPTION_ACCESS_VIOLATION"); + } else if (Platform.isOSX()) { + output.shouldContain("SIGBUS"); + } else { + output.shouldContain("SIGSEGV"); + } + } + + public static class DummyClassWithMainTryingToReadFromNoaccessArea { + + // This method calls whitebox method reading from noaccess area + public static void main(String args[]) throws Exception { + WhiteBox.getWhiteBox().readFromNoaccessArea(); + throw new Exception("Call of readFromNoaccessArea succeeded! This is wrong. Crash expected. Test failed."); + } + } + +} diff --git a/hotspot/test/runtime/memory/RunUnitTestsConcurrently.java b/hotspot/test/runtime/memory/RunUnitTestsConcurrently.java new file mode 100644 index 00000000000..35b855e0af3 --- /dev/null +++ b/hotspot/test/runtime/memory/RunUnitTestsConcurrently.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @summary Test launches unit tests inside vm concurrently + * @library /testlibrary /testlibrary/whitebox + * @build RunUnitTestsConcurrently + * @run main ClassFileInstaller sun.hotspot.WhiteBox + * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI RunUnitTestsConcurrently 30 15000 + */ + +import com.oracle.java.testlibrary.*; +import sun.hotspot.WhiteBox; + +public class RunUnitTestsConcurrently { + + private static WhiteBox wb; + private static long timeout; + private static long timeStamp; + + public static class Worker implements Runnable { + @Override + public void run() { + while (System.currentTimeMillis() - timeStamp < timeout) { + WhiteBox.getWhiteBox().runMemoryUnitTests(); + } + } + } + + public static void main(String[] args) throws InterruptedException { + if (!Platform.isDebugBuild() || !Platform.is64bit()) { + return; + } + wb = WhiteBox.getWhiteBox(); + System.out.println("Starting threads"); + + int threads = Integer.valueOf(args[0]); + timeout = Long.valueOf(args[1]); + + timeStamp = System.currentTimeMillis(); + + Thread[] threadsArray = new Thread[threads]; + for (int i = 0; i < threads; i++) { + threadsArray[i] = new Thread(new Worker()); + threadsArray[i].start(); + } + for (int i = 0; i < threads; i++) { + threadsArray[i].join(); + } + + System.out.println("Quitting test."); + } +} diff --git a/hotspot/test/runtime/memory/StressVirtualSpaceResize.java b/hotspot/test/runtime/memory/StressVirtualSpaceResize.java new file mode 100644 index 00000000000..df978012080 --- /dev/null +++ b/hotspot/test/runtime/memory/StressVirtualSpaceResize.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @summary Stress test that expands/shrinks VirtualSpace + * @library /testlibrary /testlibrary/whitebox + * @build StressVirtualSpaceResize + * @run main ClassFileInstaller sun.hotspot.WhiteBox + * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI StressVirtualSpaceResize + */ + +import sun.hotspot.WhiteBox; + +public class StressVirtualSpaceResize { + + public static void main(String args[]) throws Exception { + if (WhiteBox.getWhiteBox().stressVirtualSpaceResize(1000, 0xffffL, 0xffffL) != 0) + throw new RuntimeException("Whitebox method stressVirtualSpaceResize returned non zero exit code"); + } +} diff --git a/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java b/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java index 091b5f7543b..da1244ce093 100644 --- a/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java +++ b/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java @@ -144,4 +144,10 @@ public class WhiteBox { // force Full GC public native void fullGC(); + + // Tests on ReservedSpace/VirtualSpace classes + public native int stressVirtualSpaceResize(long reservedSpaceSize, long magnitude, long iterations); + public native void runMemoryUnitTests(); + public native void readFromNoaccessArea(); + } From 2ec0e87f43a00199b9296c7dae84536d113680a2 Mon Sep 17 00:00:00 2001 From: Jesper Wilhelmsson Date: Sun, 10 Nov 2013 00:07:29 +0100 Subject: [PATCH 050/145] 8027911: Assertion in the collector policy when running gc/arguments/TestMaxNewSize.java Update NewSize when _initial_gen0_size is changed Reviewed-by: tschatzl, brutisso --- hotspot/src/share/vm/memory/collectorPolicy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hotspot/src/share/vm/memory/collectorPolicy.cpp b/hotspot/src/share/vm/memory/collectorPolicy.cpp index 8c3e95a0550..0db0f749697 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.cpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.cpp @@ -621,7 +621,7 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { // Write back to flags if necessary if (NewSize != _initial_gen0_size) { - FLAG_SET_ERGO(uintx, NewSize, _max_gen0_size); + FLAG_SET_ERGO(uintx, NewSize, _initial_gen0_size); } if (MaxNewSize != _max_gen0_size) { From c6da83319b5dab298c9f268d44aec5b1bed486ce Mon Sep 17 00:00:00 2001 From: Jesper Wilhelmsson Date: Mon, 11 Nov 2013 13:50:10 +0100 Subject: [PATCH 051/145] 8028093: Initial young size is smaller than minimum young size Remove min_gen1_size argument from adjust_gen0_sizes() Reviewed-by: tschatzl, brutisso --- .../src/share/vm/memory/collectorPolicy.cpp | 19 ++++++++----------- .../src/share/vm/memory/collectorPolicy.hpp | 4 ++-- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/hotspot/src/share/vm/memory/collectorPolicy.cpp b/hotspot/src/share/vm/memory/collectorPolicy.cpp index 0db0f749697..204011b689e 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.cpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.cpp @@ -523,17 +523,15 @@ void GenCollectorPolicy::initialize_size_info() { // keeping it simple also seems a worthwhile goal. bool TwoGenerationCollectorPolicy::adjust_gen0_sizes(size_t* gen0_size_ptr, size_t* gen1_size_ptr, - const size_t heap_size, - const size_t min_gen1_size) { + const size_t heap_size) { bool result = false; - if ((*gen1_size_ptr + *gen0_size_ptr) > heap_size) { + if ((*gen0_size_ptr + *gen1_size_ptr) > heap_size) { uintx smallest_new_size = young_gen_size_lower_bound(); - if ((heap_size < (*gen0_size_ptr + min_gen1_size)) && - (heap_size >= min_gen1_size + smallest_new_size)) { - // Adjust gen0 down to accommodate min_gen1_size - *gen0_size_ptr = align_size_down_bounded(heap_size - min_gen1_size, _gen_alignment); - assert(*gen0_size_ptr > 0, "Min gen0 is too large"); + if ((heap_size < (*gen0_size_ptr + _min_gen1_size)) && + (heap_size >= _min_gen1_size + smallest_new_size)) { + // Adjust gen0 down to accommodate _min_gen1_size + *gen0_size_ptr = align_size_down_bounded(heap_size - _min_gen1_size, _gen_alignment); result = true; } else { *gen1_size_ptr = align_size_down_bounded(heap_size - *gen0_size_ptr, _gen_alignment); @@ -594,8 +592,7 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { } // If there is an inconsistency between the OldSize and the minimum and/or // initial size of gen0, since OldSize was explicitly set, OldSize wins. - if (adjust_gen0_sizes(&_min_gen0_size, &_min_gen1_size, - _min_heap_byte_size, _min_gen1_size)) { + if (adjust_gen0_sizes(&_min_gen0_size, &_min_gen1_size, _min_heap_byte_size)) { if (PrintGCDetails && Verbose) { gclog_or_tty->print_cr("2: Minimum gen0 " SIZE_FORMAT " Initial gen0 " SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT, @@ -604,7 +601,7 @@ void TwoGenerationCollectorPolicy::initialize_size_info() { } // Initial size if (adjust_gen0_sizes(&_initial_gen0_size, &_initial_gen1_size, - _initial_heap_byte_size, _initial_gen1_size)) { + _initial_heap_byte_size)) { if (PrintGCDetails && Verbose) { gclog_or_tty->print_cr("3: Minimum gen0 " SIZE_FORMAT " Initial gen0 " SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT, diff --git a/hotspot/src/share/vm/memory/collectorPolicy.hpp b/hotspot/src/share/vm/memory/collectorPolicy.hpp index 509702319d0..b72030113c4 100644 --- a/hotspot/src/share/vm/memory/collectorPolicy.hpp +++ b/hotspot/src/share/vm/memory/collectorPolicy.hpp @@ -336,9 +336,9 @@ class TwoGenerationCollectorPolicy : public GenCollectorPolicy { return CollectorPolicy::TwoGenerationCollectorPolicyKind; } - // Returns true is gen0 sizes were adjusted + // Returns true if gen0 sizes were adjusted bool adjust_gen0_sizes(size_t* gen0_size_ptr, size_t* gen1_size_ptr, - const size_t heap_size, const size_t min_gen1_size); + const size_t heap_size); }; class MarkSweepPolicy : public TwoGenerationCollectorPolicy { From 10847a8fd1d399842d62a50edd5ee28b5d3a0038 Mon Sep 17 00:00:00 2001 From: Stefan Johansson Date: Fri, 8 Nov 2013 17:46:53 +0100 Subject: [PATCH 052/145] 8027960: Assertion assert(end >= start) failed during nightly testing on solaris Needed to update _space_alignment in generation sizer to ensure correct sizing of spaces. Reviewed-by: jmasa, tschatzl --- .../vm/gc_implementation/parallelScavenge/generationSizer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp index 638460524eb..e417cd49599 100644 --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp @@ -75,6 +75,7 @@ void GenerationSizer::initialize_size_info() { size_t new_alignment = round_to(page_sz, _gen_alignment); if (new_alignment != _gen_alignment) { _gen_alignment = new_alignment; + _space_alignment = new_alignment; // Redo everything from the start initialize_flags(); } From 46de2cd14f061b97cc56163c5c0473f065008da5 Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Fri, 8 Nov 2013 09:43:01 -0800 Subject: [PATCH 053/145] 8028069: (ref) Finalizer.c not deleted in the changeset for JDK-8027351 Reviewed-by: alanb --- .../share/native/java/lang/ref/Finalizer.c | 42 ------------------- 1 file changed, 42 deletions(-) delete mode 100644 jdk/src/share/native/java/lang/ref/Finalizer.c diff --git a/jdk/src/share/native/java/lang/ref/Finalizer.c b/jdk/src/share/native/java/lang/ref/Finalizer.c deleted file mode 100644 index 115dc1ba786..00000000000 --- a/jdk/src/share/native/java/lang/ref/Finalizer.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#include "jni.h" -#include "java_lang_ref_Finalizer.h" - - -JNIEXPORT void JNICALL -Java_java_lang_ref_Finalizer_invokeFinalizeMethod(JNIEnv *env, jclass clazz, - jobject ob) -{ - jclass cls; - jmethodID mid; - - cls = (*env)->GetObjectClass(env, ob); - if (cls == NULL) return; - mid = (*env)->GetMethodID(env, cls, "finalize", "()V"); - if (mid == NULL) return; - (*env)->CallVoidMethod(env, ob, mid); -} From 5d27126a4431e60545448f18b5edf071f13a8523 Mon Sep 17 00:00:00 2001 From: Tristan Yan Date: Fri, 8 Nov 2013 18:54:29 +0000 Subject: [PATCH 054/145] 8023462: TEST_BUG: test/com/sun/net/httpserver/bugs/B6433018.java fails on slow/single core machine Reviewed-by: chegar --- .../com/sun/net/httpserver/bugs/B6433018.java | 75 ++++++++++--------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/jdk/test/com/sun/net/httpserver/bugs/B6433018.java b/jdk/test/com/sun/net/httpserver/bugs/B6433018.java index 7b4aa43c512..3193530aebc 100644 --- a/jdk/test/com/sun/net/httpserver/bugs/B6433018.java +++ b/jdk/test/com/sun/net/httpserver/bugs/B6433018.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2013 Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,20 +29,19 @@ import com.sun.net.httpserver.*; -import java.util.*; import java.util.concurrent.*; import java.io.*; import java.net.*; public class B6433018 { - static String CRLF = "\r\n"; + static final String CRLF = "\r\n"; /* invalid HTTP POST with extra CRLF at end */ /* This checks that the server is able to handle it * and recognise the second request */ - static String cmd = + static final String cmd = "POST /test/item HTTP/1.1"+CRLF+ "Keep-Alive: 300"+CRLF+ "Proxy-Connection: keep-alive"+CRLF+ @@ -61,45 +60,47 @@ public class B6433018 { "Pragma: no-cache"+CRLF+ "Cache-Control: no-cache"+CRLF+CRLF; - public static void main (String[] args) throws Exception { - Handler handler = new Handler(); - InetSocketAddress addr = new InetSocketAddress (0); - HttpServer server = HttpServer.create (addr, 0); - HttpContext ctx = server.createContext ("/test", handler); + public static void main(String[] args) throws Exception { + CountDownLatch finished = new CountDownLatch(2); + Handler handler = new Handler(finished); + InetSocketAddress addr = new InetSocketAddress(0); + HttpServer server = HttpServer.create(addr, 0); + HttpContext ctx = server.createContext("/test", handler); - server.start (); - - Socket s = new Socket ("localhost", server.getAddress().getPort()); - - try { - OutputStream os = s.getOutputStream(); - os.write (cmd.getBytes()); - Thread.sleep (3000); - s.close(); - } catch (IOException e) { } - server.stop(2); - if (requests != 2) { - throw new RuntimeException ("did not receive the 2 requests"); + server.start(); + int port = server.getAddress().getPort(); + try (Socket s = new Socket("localhost", port); + OutputStream os = s.getOutputStream()) { + os.write(cmd.getBytes()); + finished.await(30, TimeUnit.SECONDS); + } finally { + server.stop(2); } - System.out.println ("OK"); + + if (finished.getCount() != 0) + throw new RuntimeException("did not receive the 2 requests"); + + System.out.println("OK"); } - public static boolean error = false; - static int requests = 0; - static class Handler implements HttpHandler { - int invocation = 1; - public void handle (HttpExchange t) - throws IOException - { - InputStream is = t.getRequestBody(); - Headers map = t.getRequestHeaders(); - Headers rmap = t.getResponseHeaders(); - while (is.read () != -1) ; - is.close(); - t.sendResponseHeaders (200, -1); + private final CountDownLatch finished; + + Handler(CountDownLatch finished) { + this.finished = finished; + } + + @Override + public void handle(HttpExchange t) throws IOException { + try (InputStream is = t.getRequestBody()) { + Headers map = t.getRequestHeaders(); + Headers rmap = t.getResponseHeaders(); + while (is.read() != -1); + } + t.sendResponseHeaders(200, -1); t.close(); - requests ++; + finished.countDown(); } } } + From 50b0f7fef4bb53396cabe904fe8cd72d7dd5013b Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Fri, 8 Nov 2013 12:13:02 -0800 Subject: [PATCH 055/145] 8025985: com.sun.management.OSMBeanFactory should not be public Reviewed-by: alanb, erikj, ihse, jbachorik --- jdk/makefiles/lib/ServiceabilityLibraries.gmk | 9 +--- .../mapfiles/libmanagement/mapfile-vers | 22 ++++---- ...Impl.java => BaseOperatingSystemImpl.java} | 6 +-- .../management/ManagementFactoryHelper.java | 4 +- .../com/sun/management/OSMBeanFactory.java | 53 ------------------- .../management/OperatingSystemImpl.java} | 11 ++-- .../sun/management/LinuxOperatingSystem.c | 6 +-- .../sun/management/MacosxOperatingSystem.c | 6 +-- .../management/OperatingSystemImpl.c} | 20 +++---- .../sun/management/SolarisOperatingSystem.c | 6 +-- .../com/sun/management/OSMBeanFactory.java | 52 ------------------ .../management/OperatingSystemImpl.java} | 9 ++-- .../management/OperatingSystemImpl.c} | 20 +++---- 13 files changed, 53 insertions(+), 171 deletions(-) rename jdk/src/share/classes/sun/management/{OperatingSystemImpl.java => BaseOperatingSystemImpl.java} (93%) delete mode 100644 jdk/src/solaris/classes/com/sun/management/OSMBeanFactory.java rename jdk/src/solaris/classes/{com/sun/management/UnixOperatingSystem.java => sun/management/OperatingSystemImpl.java} (89%) rename jdk/src/solaris/native/{com => }/sun/management/LinuxOperatingSystem.c (98%) rename jdk/src/solaris/native/{com => }/sun/management/MacosxOperatingSystem.c (96%) rename jdk/src/solaris/native/{com/sun/management/UnixOperatingSystem_md.c => sun/management/OperatingSystemImpl.c} (94%) rename jdk/src/solaris/native/{com => }/sun/management/SolarisOperatingSystem.c (97%) delete mode 100644 jdk/src/windows/classes/com/sun/management/OSMBeanFactory.java rename jdk/src/windows/classes/{com/sun/management/OperatingSystem.java => sun/management/OperatingSystemImpl.java} (92%) rename jdk/src/windows/native/{com/sun/management/OperatingSystem_md.c => sun/management/OperatingSystemImpl.c} (98%) diff --git a/jdk/makefiles/lib/ServiceabilityLibraries.gmk b/jdk/makefiles/lib/ServiceabilityLibraries.gmk index 0cc5ad96a88..d408eb36dea 100644 --- a/jdk/makefiles/lib/ServiceabilityLibraries.gmk +++ b/jdk/makefiles/lib/ServiceabilityLibraries.gmk @@ -275,19 +275,12 @@ BUILD_LIBRARIES += $(BUILD_LIBINSTRUMENT) ########################################################################################## BUILD_LIBMANAGEMENT_SRC := $(JDK_TOPDIR)/src/share/native/sun/management \ - $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/management \ - $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/com/sun/management + $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/management BUILD_LIBMANAGEMENT_EXCLUDES := BUILD_LIBMANAGEMENT_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/management -ifneq ($(OPENJDK_TARGET_OS), windows) - BUILD_LIBMANAGEMENT_EXCLUDES += OperatingSystem_md.c -else - BUILD_LIBMANAGEMENT_EXCLUDES += UnixOperatingSystem_md.c -endif - ifneq ($(OPENJDK_TARGET_OS), solaris) BUILD_LIBMANAGEMENT_EXCLUDES += SolarisOperatingSystem.c endif diff --git a/jdk/makefiles/mapfiles/libmanagement/mapfile-vers b/jdk/makefiles/mapfiles/libmanagement/mapfile-vers index 724f7bb7100..6e093a3348f 100644 --- a/jdk/makefiles/mapfiles/libmanagement/mapfile-vers +++ b/jdk/makefiles/mapfiles/libmanagement/mapfile-vers @@ -27,17 +27,17 @@ SUNWprivate_1.1 { global: - Java_com_sun_management_UnixOperatingSystem_getCommittedVirtualMemorySize; - Java_com_sun_management_UnixOperatingSystem_getFreePhysicalMemorySize; - Java_com_sun_management_UnixOperatingSystem_getFreeSwapSpaceSize; - Java_com_sun_management_UnixOperatingSystem_getMaxFileDescriptorCount; - Java_com_sun_management_UnixOperatingSystem_getOpenFileDescriptorCount; - Java_com_sun_management_UnixOperatingSystem_getProcessCpuLoad; - Java_com_sun_management_UnixOperatingSystem_getProcessCpuTime; - Java_com_sun_management_UnixOperatingSystem_getSystemCpuLoad; - Java_com_sun_management_UnixOperatingSystem_getTotalPhysicalMemorySize; - Java_com_sun_management_UnixOperatingSystem_getTotalSwapSpaceSize; - Java_com_sun_management_UnixOperatingSystem_initialize; + Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize; + Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize; + Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize; + Java_sun_management_OperatingSystemImpl_getMaxFileDescriptorCount; + Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount; + Java_sun_management_OperatingSystemImpl_getProcessCpuLoad; + Java_sun_management_OperatingSystemImpl_getProcessCpuTime; + Java_sun_management_OperatingSystemImpl_getSystemCpuLoad; + Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize; + Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize; + Java_sun_management_OperatingSystemImpl_initialize; Java_sun_management_ClassLoadingImpl_setVerboseClass; Java_sun_management_DiagnosticCommandImpl_executeDiagnosticCommand; Java_sun_management_DiagnosticCommandImpl_getDiagnosticCommands; diff --git a/jdk/src/share/classes/sun/management/OperatingSystemImpl.java b/jdk/src/share/classes/sun/management/BaseOperatingSystemImpl.java similarity index 93% rename from jdk/src/share/classes/sun/management/OperatingSystemImpl.java rename to jdk/src/share/classes/sun/management/BaseOperatingSystemImpl.java index 7099a3537fc..ac7e10640d6 100644 --- a/jdk/src/share/classes/sun/management/OperatingSystemImpl.java +++ b/jdk/src/share/classes/sun/management/BaseOperatingSystemImpl.java @@ -37,14 +37,14 @@ import sun.misc.Unsafe; * ManagementFactory.getOperatingSystemMXBean() returns an instance * of this class. */ -public class OperatingSystemImpl implements OperatingSystemMXBean { +public class BaseOperatingSystemImpl implements OperatingSystemMXBean { private final VMManagement jvm; /** - * Constructor of OperatingSystemImpl class. + * Constructor of BaseOperatingSystemImpl class. */ - protected OperatingSystemImpl(VMManagement vm) { + protected BaseOperatingSystemImpl(VMManagement vm) { this.jvm = vm; } diff --git a/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java b/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java index 43079e986d6..be82ddae27e 100644 --- a/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java +++ b/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java @@ -46,7 +46,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import com.sun.management.DiagnosticCommandMBean; -import com.sun.management.OSMBeanFactory; import com.sun.management.HotSpotDiagnosticMXBean; import static java.lang.management.ManagementFactory.*; @@ -104,8 +103,7 @@ public class ManagementFactoryHelper { public static synchronized OperatingSystemMXBean getOperatingSystemMXBean() { if (osMBean == null) { - osMBean = (OperatingSystemImpl) - OSMBeanFactory.getOperatingSystemMXBean(jvm); + osMBean = new OperatingSystemImpl(jvm); } return osMBean; } diff --git a/jdk/src/solaris/classes/com/sun/management/OSMBeanFactory.java b/jdk/src/solaris/classes/com/sun/management/OSMBeanFactory.java deleted file mode 100644 index cbd9aa207d3..00000000000 --- a/jdk/src/solaris/classes/com/sun/management/OSMBeanFactory.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.management; - -import java.lang.management.OperatingSystemMXBean; -import sun.management.VMManagement; - -/** - * Operating system dependent MBean factory. - *

      - * WARNING: While this class is public, it should not be treated as - * public API and its API may change in incompatable ways between dot dot - * releases and even patch releases. You should not rely on this class. - */ -@jdk.Exported(false) -public class OSMBeanFactory { - /* static factory class */ - private OSMBeanFactory() {}; - - private static UnixOperatingSystem osMBean = null; - - public static synchronized OperatingSystemMXBean - getOperatingSystemMXBean(VMManagement jvm) { - - if (osMBean == null) { - osMBean = new UnixOperatingSystem(jvm); - } - return (OperatingSystemMXBean) osMBean; - } -} diff --git a/jdk/src/solaris/classes/com/sun/management/UnixOperatingSystem.java b/jdk/src/solaris/classes/sun/management/OperatingSystemImpl.java similarity index 89% rename from jdk/src/solaris/classes/com/sun/management/UnixOperatingSystem.java rename to jdk/src/solaris/classes/sun/management/OperatingSystemImpl.java index d80779cf46f..666840f247d 100644 --- a/jdk/src/solaris/classes/com/sun/management/UnixOperatingSystem.java +++ b/jdk/src/solaris/classes/sun/management/OperatingSystemImpl.java @@ -23,9 +23,7 @@ * questions. */ -package com.sun.management; - -import sun.management.VMManagement; +package sun.management; /** * Implementation class for the operating system. @@ -34,11 +32,10 @@ import sun.management.VMManagement; * ManagementFactory.getOperatingSystemMXBean() returns an instance * of this class. */ -class UnixOperatingSystem - extends sun.management.OperatingSystemImpl - implements UnixOperatingSystemMXBean { +class OperatingSystemImpl extends BaseOperatingSystemImpl + implements com.sun.management.UnixOperatingSystemMXBean { - UnixOperatingSystem(VMManagement vm) { + OperatingSystemImpl(VMManagement vm) { super(vm); } diff --git a/jdk/src/solaris/native/com/sun/management/LinuxOperatingSystem.c b/jdk/src/solaris/native/sun/management/LinuxOperatingSystem.c similarity index 98% rename from jdk/src/solaris/native/com/sun/management/LinuxOperatingSystem.c rename to jdk/src/solaris/native/sun/management/LinuxOperatingSystem.c index 19d84fe0f84..c8bd739ebef 100644 --- a/jdk/src/solaris/native/com/sun/management/LinuxOperatingSystem.c +++ b/jdk/src/solaris/native/sun/management/LinuxOperatingSystem.c @@ -35,7 +35,7 @@ #include #include #include -#include "com_sun_management_UnixOperatingSystem.h" +#include "sun_management_OperatingSystemImpl.h" struct ticks { uint64_t used; @@ -310,7 +310,7 @@ double get_process_load() { } JNIEXPORT jdouble JNICALL -Java_com_sun_management_UnixOperatingSystem_getSystemCpuLoad +Java_sun_management_OperatingSystemImpl_getSystemCpuLoad (JNIEnv *env, jobject dummy) { if(perfInit() == 0) { @@ -321,7 +321,7 @@ Java_com_sun_management_UnixOperatingSystem_getSystemCpuLoad } JNIEXPORT jdouble JNICALL -Java_com_sun_management_UnixOperatingSystem_getProcessCpuLoad +Java_sun_management_OperatingSystemImpl_getProcessCpuLoad (JNIEnv *env, jobject dummy) { if(perfInit() == 0) { diff --git a/jdk/src/solaris/native/com/sun/management/MacosxOperatingSystem.c b/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c similarity index 96% rename from jdk/src/solaris/native/com/sun/management/MacosxOperatingSystem.c rename to jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c index 7f8c1e97f13..8fb39786fe1 100644 --- a/jdk/src/solaris/native/com/sun/management/MacosxOperatingSystem.c +++ b/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c @@ -23,7 +23,7 @@ * questions. */ -#include "com_sun_management_UnixOperatingSystem.h" +#include "sun_management_OperatingSystemImpl.h" #include #include @@ -31,7 +31,7 @@ JNIEXPORT jdouble JNICALL -Java_com_sun_management_UnixOperatingSystem_getSystemCpuLoad +Java_sun_management_OperatingSystemImpl_getSystemCpuLoad (JNIEnv *env, jobject dummy) { // This code is influenced by the darwin top source @@ -83,7 +83,7 @@ Java_com_sun_management_UnixOperatingSystem_getSystemCpuLoad JNIEXPORT jdouble JNICALL -Java_com_sun_management_UnixOperatingSystem_getProcessCpuLoad +Java_sun_management_OperatingSystemImpl_getProcessCpuLoad (JNIEnv *env, jobject dummy) { // This code is influenced by the darwin top source diff --git a/jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c similarity index 94% rename from jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c rename to jdk/src/solaris/native/sun/management/OperatingSystemImpl.c index e2574e4d496..f1322ebd90b 100644 --- a/jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c +++ b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c @@ -28,7 +28,7 @@ #include "jlong.h" #include "jvm.h" #include "management.h" -#include "com_sun_management_UnixOperatingSystem.h" +#include "sun_management_OperatingSystemImpl.h" #include #include @@ -175,14 +175,14 @@ static jlong get_total_or_available_swap_space_size(JNIEnv* env, jboolean availa } JNIEXPORT void JNICALL -Java_com_sun_management_UnixOperatingSystem_initialize +Java_sun_management_OperatingSystemImpl_initialize (JNIEnv *env, jclass cls) { page_size = sysconf(_SC_PAGESIZE); } JNIEXPORT jlong JNICALL -Java_com_sun_management_UnixOperatingSystem_getCommittedVirtualMemorySize +Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize (JNIEnv *env, jobject mbean) { #ifdef __solaris__ @@ -249,21 +249,21 @@ Java_com_sun_management_UnixOperatingSystem_getCommittedVirtualMemorySize } JNIEXPORT jlong JNICALL -Java_com_sun_management_UnixOperatingSystem_getTotalSwapSpaceSize +Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize (JNIEnv *env, jobject mbean) { return get_total_or_available_swap_space_size(env, JNI_FALSE); } JNIEXPORT jlong JNICALL -Java_com_sun_management_UnixOperatingSystem_getFreeSwapSpaceSize +Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize (JNIEnv *env, jobject mbean) { return get_total_or_available_swap_space_size(env, JNI_TRUE); } JNIEXPORT jlong JNICALL -Java_com_sun_management_UnixOperatingSystem_getProcessCpuTime +Java_sun_management_OperatingSystemImpl_getProcessCpuTime (JNIEnv *env, jobject mbean) { #ifdef __APPLE__ @@ -305,7 +305,7 @@ Java_com_sun_management_UnixOperatingSystem_getProcessCpuTime } JNIEXPORT jlong JNICALL -Java_com_sun_management_UnixOperatingSystem_getFreePhysicalMemorySize +Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize (JNIEnv *env, jobject mbean) { #ifdef __APPLE__ @@ -333,7 +333,7 @@ Java_com_sun_management_UnixOperatingSystem_getFreePhysicalMemorySize } JNIEXPORT jlong JNICALL -Java_com_sun_management_UnixOperatingSystem_getTotalPhysicalMemorySize +Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize (JNIEnv *env, jobject mbean) { #ifdef _ALLBSD_SOURCE @@ -358,7 +358,7 @@ Java_com_sun_management_UnixOperatingSystem_getTotalPhysicalMemorySize JNIEXPORT jlong JNICALL -Java_com_sun_management_UnixOperatingSystem_getOpenFileDescriptorCount +Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount (JNIEnv *env, jobject mbean) { #ifdef __APPLE__ @@ -438,7 +438,7 @@ Java_com_sun_management_UnixOperatingSystem_getOpenFileDescriptorCount } JNIEXPORT jlong JNICALL -Java_com_sun_management_UnixOperatingSystem_getMaxFileDescriptorCount +Java_sun_management_OperatingSystemImpl_getMaxFileDescriptorCount (JNIEnv *env, jobject mbean) { struct rlimit rlp; diff --git a/jdk/src/solaris/native/com/sun/management/SolarisOperatingSystem.c b/jdk/src/solaris/native/sun/management/SolarisOperatingSystem.c similarity index 97% rename from jdk/src/solaris/native/com/sun/management/SolarisOperatingSystem.c rename to jdk/src/solaris/native/sun/management/SolarisOperatingSystem.c index c5ebb975ef2..a8136f1ac63 100644 --- a/jdk/src/solaris/native/com/sun/management/SolarisOperatingSystem.c +++ b/jdk/src/solaris/native/sun/management/SolarisOperatingSystem.c @@ -38,7 +38,7 @@ #include #include #include "jvm.h" -#include "com_sun_management_UnixOperatingSystem.h" +#include "sun_management_OperatingSystemImpl.h" typedef struct { kstat_t *kstat; @@ -226,14 +226,14 @@ double get_process_load(void) { } JNIEXPORT jdouble JNICALL -Java_com_sun_management_UnixOperatingSystem_getSystemCpuLoad +Java_sun_management_OperatingSystemImpl_getSystemCpuLoad (JNIEnv *env, jobject dummy) { return get_cpu_load(-1); } JNIEXPORT jdouble JNICALL -Java_com_sun_management_UnixOperatingSystem_getProcessCpuLoad +Java_sun_management_OperatingSystemImpl_getProcessCpuLoad (JNIEnv *env, jobject dummy) { return get_process_load(); diff --git a/jdk/src/windows/classes/com/sun/management/OSMBeanFactory.java b/jdk/src/windows/classes/com/sun/management/OSMBeanFactory.java deleted file mode 100644 index d341f13d0f5..00000000000 --- a/jdk/src/windows/classes/com/sun/management/OSMBeanFactory.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.management; - -import java.lang.management.OperatingSystemMXBean; -import sun.management.VMManagement; - -/** - * Operating system dependent MBean factory. - *

      - * WARNING: While this class is public, it should not be treated as - * public API and its API may change in incompatable ways between dot dot - * releases and even patch releases. You should not rely on this class. - */ -public class OSMBeanFactory { - /* static factory class */ - private OSMBeanFactory() {}; - - private static OperatingSystem osMBean = null; - - public static synchronized OperatingSystemMXBean - getOperatingSystemMXBean(VMManagement jvm) { - - if (osMBean == null) { - osMBean = new OperatingSystem(jvm); - } - return (OperatingSystemMXBean) osMBean; - } -} diff --git a/jdk/src/windows/classes/com/sun/management/OperatingSystem.java b/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java similarity index 92% rename from jdk/src/windows/classes/com/sun/management/OperatingSystem.java rename to jdk/src/windows/classes/sun/management/OperatingSystemImpl.java index 0c5bf9bab73..e39b2f72141 100644 --- a/jdk/src/windows/classes/com/sun/management/OperatingSystem.java +++ b/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java @@ -23,9 +23,9 @@ * questions. */ -package com.sun.management; +package sun.management; -import sun.management.VMManagement; +import java.lang.management.OperatingSystemMXBean; /** * Implementation class for the operating system. @@ -34,15 +34,14 @@ import sun.management.VMManagement; * ManagementFactory.getOperatingSystemMXBean() returns an instance * of this class. */ -class OperatingSystem - extends sun.management.OperatingSystemImpl +class OperatingSystemImpl extends BaseOperatingSystemImpl implements OperatingSystemMXBean { // psapiLock is a lock to make sure only one thread loading // PSAPI DLL. private static Object psapiLock = new Object(); - OperatingSystem(VMManagement vm) { + OperatingSystemImpl(VMManagement vm) { super(vm); } diff --git a/jdk/src/windows/native/com/sun/management/OperatingSystem_md.c b/jdk/src/windows/native/sun/management/OperatingSystemImpl.c similarity index 98% rename from jdk/src/windows/native/com/sun/management/OperatingSystem_md.c rename to jdk/src/windows/native/sun/management/OperatingSystemImpl.c index 62e5615c80a..c684e2bd81c 100644 --- a/jdk/src/windows/native/com/sun/management/OperatingSystem_md.c +++ b/jdk/src/windows/native/sun/management/OperatingSystemImpl.c @@ -28,7 +28,7 @@ #include "jlong.h" #include "jvm.h" #include "management.h" -#include "com_sun_management_OperatingSystem.h" +#include "sun_management_OperatingSystemImpl.h" #include #include @@ -77,7 +77,7 @@ static HANDLE main_process; int perfiInit(void); JNIEXPORT void JNICALL -Java_com_sun_management_OperatingSystem_initialize +Java_sun_management_OperatingSystemImpl_initialize (JNIEnv *env, jclass cls) { main_process = GetCurrentProcess(); @@ -85,7 +85,7 @@ Java_com_sun_management_OperatingSystem_initialize } JNIEXPORT jlong JNICALL -Java_com_sun_management_OperatingSystem_getCommittedVirtualMemorySize0 +Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize0 (JNIEnv *env, jobject mbean) { PROCESS_MEMORY_COUNTERS pmc; @@ -97,7 +97,7 @@ Java_com_sun_management_OperatingSystem_getCommittedVirtualMemorySize0 } JNIEXPORT jlong JNICALL -Java_com_sun_management_OperatingSystem_getTotalSwapSpaceSize +Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize (JNIEnv *env, jobject mbean) { MEMORYSTATUSEX ms; @@ -107,7 +107,7 @@ Java_com_sun_management_OperatingSystem_getTotalSwapSpaceSize } JNIEXPORT jlong JNICALL -Java_com_sun_management_OperatingSystem_getFreeSwapSpaceSize +Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize (JNIEnv *env, jobject mbean) { MEMORYSTATUSEX ms; @@ -117,7 +117,7 @@ Java_com_sun_management_OperatingSystem_getFreeSwapSpaceSize } JNIEXPORT jlong JNICALL -Java_com_sun_management_OperatingSystem_getProcessCpuTime +Java_sun_management_OperatingSystemImpl_getProcessCpuTime (JNIEnv *env, jobject mbean) { @@ -136,7 +136,7 @@ Java_com_sun_management_OperatingSystem_getProcessCpuTime } JNIEXPORT jlong JNICALL -Java_com_sun_management_OperatingSystem_getFreePhysicalMemorySize +Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize (JNIEnv *env, jobject mbean) { MEMORYSTATUSEX ms; @@ -146,7 +146,7 @@ Java_com_sun_management_OperatingSystem_getFreePhysicalMemorySize } JNIEXPORT jlong JNICALL -Java_com_sun_management_OperatingSystem_getTotalPhysicalMemorySize +Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize (JNIEnv *env, jobject mbean) { MEMORYSTATUSEX ms; @@ -927,14 +927,14 @@ perfInit(void) { } JNIEXPORT jdouble JNICALL -Java_com_sun_management_OperatingSystem_getSystemCpuLoad +Java_sun_management_OperatingSystemImpl_getSystemCpuLoad (JNIEnv *env, jobject dummy) { return perfGetCPULoad(-1); } JNIEXPORT jdouble JNICALL -Java_com_sun_management_OperatingSystem_getProcessCpuLoad +Java_sun_management_OperatingSystemImpl_getProcessCpuLoad (JNIEnv *env, jobject dummy) { return perfGetProcessLoad(); From 61b2527b107fad1b5913d945f45ffe46b79eb99c Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Fri, 8 Nov 2013 12:19:25 -0800 Subject: [PATCH 056/145] 8028076: Correct raw type lint warnings in core reflection implementation classes Reviewed-by: lancea, alanb --- .../generics/reflectiveObjects/ParameterizedTypeImpl.java | 2 +- .../reflect/generics/repository/GenericDeclRepository.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jdk/src/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java b/jdk/src/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java index 97524c40a76..7e80afb7282 100644 --- a/jdk/src/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java +++ b/jdk/src/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java @@ -52,7 +52,7 @@ public class ParameterizedTypeImpl implements ParameterizedType { } private void validateConstructorArguments() { - TypeVariable/**/[] formals = rawType.getTypeParameters(); + TypeVariable[] formals = rawType.getTypeParameters(); // check correct arity of actual type args if (formals.length != actualTypeArguments.length){ throw new MalformedParameterizedTypeException(); diff --git a/jdk/src/share/classes/sun/reflect/generics/repository/GenericDeclRepository.java b/jdk/src/share/classes/sun/reflect/generics/repository/GenericDeclRepository.java index 672cbd89cb4..4eca0a90a58 100644 --- a/jdk/src/share/classes/sun/reflect/generics/repository/GenericDeclRepository.java +++ b/jdk/src/share/classes/sun/reflect/generics/repository/GenericDeclRepository.java @@ -42,7 +42,7 @@ import sun.reflect.generics.visitor.Reifier; public abstract class GenericDeclRepository extends AbstractRepository { - private TypeVariable[] typeParams; // caches the formal type parameters + private TypeVariable[] typeParams; // caches the formal type parameters protected GenericDeclRepository(String rawSig, GenericsFactory f) { super(rawSig, f); @@ -64,7 +64,7 @@ public abstract class GenericDeclRepository * Return the formal type parameters of this generic declaration. * @return the formal type parameters of this generic declaration */ - public TypeVariable/**/[] getTypeParameters(){ + public TypeVariable[] getTypeParameters(){ if (typeParams == null) { // lazily initialize type parameters // first, extract type parameter subtree(s) from AST FormalTypeParameter[] ftps = getTree().getFormalTypeParameters(); From 086dfc45caa52c98732ccdb2224530501b890f0d Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Fri, 8 Nov 2013 21:07:42 +0000 Subject: [PATCH 057/145] 8028074: InetAddress.getByName fails with UHE "invalid IPv6 address" if host name starts with a-f Reviewed-by: chegar --- jdk/src/share/classes/java/net/InetAddress.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/src/share/classes/java/net/InetAddress.java b/jdk/src/share/classes/java/net/InetAddress.java index 05e230e7d18..99ec1acb97f 100644 --- a/jdk/src/share/classes/java/net/InetAddress.java +++ b/jdk/src/share/classes/java/net/InetAddress.java @@ -1144,7 +1144,7 @@ class InetAddress implements java.io.Serializable { ifname = host.substring (pos+1); } } - if ((addr = IPAddressUtil.textToNumericFormatV6(host)) == null) { + if ((addr = IPAddressUtil.textToNumericFormatV6(host)) == null && host.contains(":")) { throw new UnknownHostException(host + ": invalid IPv6 address"); } } else if (ipv6Expected) { From eb5d8c2f8bc30c29c743cef1166a5fce09bbbe0c Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Fri, 8 Nov 2013 17:50:24 -0500 Subject: [PATCH 058/145] 8028041: Serialized Form description of j.l.String is not consistent with the implementation Replaced incorrect description with reference to the serialization specification Reviewed-by: alanb, smarks --- jdk/src/share/classes/java/lang/String.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/jdk/src/share/classes/java/lang/String.java b/jdk/src/share/classes/java/lang/String.java index 9223c0ab54f..a7bed2280ca 100644 --- a/jdk/src/share/classes/java/lang/String.java +++ b/jdk/src/share/classes/java/lang/String.java @@ -122,14 +122,9 @@ public final class String /** * Class String is special cased within the Serialization Stream Protocol. * - * A String instance is written initially into an ObjectOutputStream in the - * following format: - *

      -     *      {@code TC_STRING} (utf String)
      -     * 
      - * The String is written by method {@code DataOutput.writeUTF}. - * A new handle is generated to refer to all future references to the - * string instance within the stream. + * A String instance is written into an ObjectOutputStream according to + * + * Object Serialization Specification, Section 6.2, "Stream Elements" */ private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0]; From ee6dd6c8739cdff070ff345f46226369daf090a4 Mon Sep 17 00:00:00 2001 From: Patrick Zhang Date: Sat, 9 Nov 2013 16:46:46 +0000 Subject: [PATCH 059/145] 8028044: [TEST_BUG] Calendar shell tests do not pass TESTVMOPTS Reviewed-by: dholmes, alanb --- jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh | 4 ++-- jdk/test/java/util/Calendar/NarrowNamesTest.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh b/jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh index a5491891bbb..ab3f4981c91 100644 --- a/jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh +++ b/jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh @@ -35,12 +35,12 @@ echo "Locale providers: default" # TODO: The purpose of ja-JP is to make sure the fallback for generic # names works. Remove ja-JP when adding generic names to localized # resources. -if ! ${TESTJAVA}/bin/java -esa -cp "${TESTCLASSES}" GenericTimeZoneNamesTest en-US ja-JP; then +if ! ${TESTJAVA}/bin/java -esa ${TESTVMOPTS} -cp "${TESTCLASSES}" GenericTimeZoneNamesTest en-US ja-JP; then STATUS=1 fi echo "Locale providers: CLDR" -if ! ${TESTJAVA}/bin/java -esa -cp "${TESTCLASSES}" -Djava.locale.providers=CLDR GenericTimeZoneNamesTest en-US; then +if ! ${TESTJAVA}/bin/java -esa ${TESTVMOPTS} -cp "${TESTCLASSES}" -Djava.locale.providers=CLDR GenericTimeZoneNamesTest en-US; then STATUS=1 fi exit ${STATUS} diff --git a/jdk/test/java/util/Calendar/NarrowNamesTest.sh b/jdk/test/java/util/Calendar/NarrowNamesTest.sh index 742e35ac291..15d1d70097a 100644 --- a/jdk/test/java/util/Calendar/NarrowNamesTest.sh +++ b/jdk/test/java/util/Calendar/NarrowNamesTest.sh @@ -34,7 +34,7 @@ STATUS=0 for P in "JRE,SPI" "CLDR" do echo "Locale providers: $P" - if ! ${TESTJAVA}/bin/java -esa -cp "${TESTCLASSES}" -Djava.locale.providers="${P}" NarrowNamesTest; then + if ! ${TESTJAVA}/bin/java -esa ${TESTVMOPTS} -cp "${TESTCLASSES}" -Djava.locale.providers="${P}" NarrowNamesTest; then STATUS=1 fi done From 3bffac4b4804b05d8486533578f1c6b9b5ff56bf Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Sat, 9 Nov 2013 14:30:03 -0500 Subject: [PATCH 060/145] 8028092: Lint cleanup of java.time.format Correct declarations and add @SuppressWarnings Reviewed-by: darcy, lancea --- .../share/classes/java/time/format/DateTimeParseContext.java | 3 ++- jdk/src/share/classes/java/time/format/Parsed.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/jdk/src/share/classes/java/time/format/DateTimeParseContext.java b/jdk/src/share/classes/java/time/format/DateTimeParseContext.java index 3157747a6f7..026a595896c 100644 --- a/jdk/src/share/classes/java/time/format/DateTimeParseContext.java +++ b/jdk/src/share/classes/java/time/format/DateTimeParseContext.java @@ -369,7 +369,8 @@ final class DateTimeParseContext { Objects.requireNonNull(chrono, "chrono"); currentParsed().chrono = chrono; if (chronoListeners != null && !chronoListeners.isEmpty()) { - Consumer[] tmp = new Consumer[1]; + @SuppressWarnings({"rawtypes", "unchecked"}) + Consumer[] tmp = new Consumer[1]; Consumer[] listeners = chronoListeners.toArray(tmp); chronoListeners.clear(); for (Consumer l : listeners) { diff --git a/jdk/src/share/classes/java/time/format/Parsed.java b/jdk/src/share/classes/java/time/format/Parsed.java index 38eda948f82..71961003e23 100644 --- a/jdk/src/share/classes/java/time/format/Parsed.java +++ b/jdk/src/share/classes/java/time/format/Parsed.java @@ -266,14 +266,14 @@ final class Parsed implements TemporalAccessor { TemporalAccessor resolvedObject = targetField.resolve(fieldValues, this, resolverStyle); if (resolvedObject != null) { if (resolvedObject instanceof ChronoZonedDateTime) { - ChronoZonedDateTime czdt = (ChronoZonedDateTime) resolvedObject; + ChronoZonedDateTime czdt = (ChronoZonedDateTime) resolvedObject; if (zone.equals(czdt.getZone()) == false) { throw new DateTimeException("ChronoZonedDateTime must use the effective parsed zone: " + zone); } resolvedObject = czdt.toLocalDateTime(); } if (resolvedObject instanceof ChronoLocalDateTime) { - ChronoLocalDateTime cldt = (ChronoLocalDateTime) resolvedObject; + ChronoLocalDateTime cldt = (ChronoLocalDateTime) resolvedObject; updateCheckConflict(cldt.toLocalTime(), Period.ZERO); updateCheckConflict(cldt.toLocalDate()); changedCount++; From db68e030300cd67aa90ad54259f599da1392d5ae Mon Sep 17 00:00:00 2001 From: Jaroslav Bachorik Date: Sun, 10 Nov 2013 20:05:03 +0100 Subject: [PATCH 061/145] 6523160: RuntimeMXBean.getUptime() returns negative values RuntimeMXBean.getUptime() should be based on HR timers rather than on the OS time Reviewed-by: dholmes, sla --- jdk/make/java/management/mapfile-vers | 1 + .../mapfiles/libmanagement/mapfile-vers | 1 + .../classes/sun/management/RuntimeImpl.java | 7 +--- .../classes/sun/management/VMManagement.java | 1 + .../sun/management/VMManagementImpl.java | 5 +++ jdk/src/share/javavm/export/jmm.h | 1 + .../native/sun/management/VMManagementImpl.c | 7 ++++ .../lang/management/RuntimeMXBean/UpTime.java | 36 ++++++++++++------- 8 files changed, 41 insertions(+), 18 deletions(-) diff --git a/jdk/make/java/management/mapfile-vers b/jdk/make/java/management/mapfile-vers index 0ea2ab4eb06..1cf52a8c710 100644 --- a/jdk/make/java/management/mapfile-vers +++ b/jdk/make/java/management/mapfile-vers @@ -103,6 +103,7 @@ SUNWprivate_1.1 { Java_sun_management_VMManagementImpl_getSafepointCount; Java_sun_management_VMManagementImpl_getSafepointSyncTime; Java_sun_management_VMManagementImpl_getStartupTime; + Java_sun_management_VMManagementImpl_getUptime0; Java_sun_management_VMManagementImpl_getTotalApplicationNonStoppedTime; Java_sun_management_VMManagementImpl_getTotalClassCount; Java_sun_management_VMManagementImpl_getTotalCompileTime; diff --git a/jdk/makefiles/mapfiles/libmanagement/mapfile-vers b/jdk/makefiles/mapfiles/libmanagement/mapfile-vers index 6e093a3348f..218dd3e3e71 100644 --- a/jdk/makefiles/mapfiles/libmanagement/mapfile-vers +++ b/jdk/makefiles/mapfiles/libmanagement/mapfile-vers @@ -103,6 +103,7 @@ SUNWprivate_1.1 { Java_sun_management_VMManagementImpl_getSafepointCount; Java_sun_management_VMManagementImpl_getSafepointSyncTime; Java_sun_management_VMManagementImpl_getStartupTime; + Java_sun_management_VMManagementImpl_getUptime0; Java_sun_management_VMManagementImpl_getTotalApplicationNonStoppedTime; Java_sun_management_VMManagementImpl_getTotalClassCount; Java_sun_management_VMManagementImpl_getTotalCompileTime; diff --git a/jdk/src/share/classes/sun/management/RuntimeImpl.java b/jdk/src/share/classes/sun/management/RuntimeImpl.java index 2e947cc03a7..c0abdb74442 100644 --- a/jdk/src/share/classes/sun/management/RuntimeImpl.java +++ b/jdk/src/share/classes/sun/management/RuntimeImpl.java @@ -110,12 +110,7 @@ class RuntimeImpl implements RuntimeMXBean { } public long getUptime() { - long current = System.currentTimeMillis(); - - // TODO: If called from client side when we support - // MBean proxy to read performance counters from shared memory, - // need to check if the monitored VM exitd. - return (current - vmStartupTime); + return jvm.getUptime(); } public long getStartTime() { diff --git a/jdk/src/share/classes/sun/management/VMManagement.java b/jdk/src/share/classes/sun/management/VMManagement.java index a02f828ed16..f4445f0225a 100644 --- a/jdk/src/share/classes/sun/management/VMManagement.java +++ b/jdk/src/share/classes/sun/management/VMManagement.java @@ -71,6 +71,7 @@ public interface VMManagement { public String getBootClassPath(); public List getVmArguments(); public long getStartupTime(); + public long getUptime(); public int getAvailableProcessors(); // Compilation Subsystem diff --git a/jdk/src/share/classes/sun/management/VMManagementImpl.java b/jdk/src/share/classes/sun/management/VMManagementImpl.java index 46e0285e622..c5d050542ac 100644 --- a/jdk/src/share/classes/sun/management/VMManagementImpl.java +++ b/jdk/src/share/classes/sun/management/VMManagementImpl.java @@ -179,6 +179,10 @@ class VMManagementImpl implements VMManagement { return result; } + public long getUptime() { + return getUptime0(); + } + private List vmArgs = null; public synchronized List getVmArguments() { if (vmArgs == null) { @@ -192,6 +196,7 @@ class VMManagementImpl implements VMManagement { public native String[] getVmArguments0(); public native long getStartupTime(); + private native long getUptime0(); public native int getAvailableProcessors(); // Compilation Subsystem diff --git a/jdk/src/share/javavm/export/jmm.h b/jdk/src/share/javavm/export/jmm.h index e017e5a02c7..3f938e25055 100644 --- a/jdk/src/share/javavm/export/jmm.h +++ b/jdk/src/share/javavm/export/jmm.h @@ -78,6 +78,7 @@ typedef enum { JMM_COMPILE_TOTAL_TIME_MS = 8, /* Total accumulated time spent in compilation */ JMM_GC_TIME_MS = 9, /* Total accumulated time spent in collection */ JMM_GC_COUNT = 10, /* Total number of collections */ + JMM_JVM_UPTIME_MS = 11, /* The JVM uptime in milliseconds */ JMM_INTERNAL_ATTRIBUTE_INDEX = 100, JMM_CLASS_LOADED_BYTES = 101, /* Number of bytes loaded instance classes */ diff --git a/jdk/src/share/native/sun/management/VMManagementImpl.c b/jdk/src/share/native/sun/management/VMManagementImpl.c index 27784e5dd62..1aa09d2c41e 100644 --- a/jdk/src/share/native/sun/management/VMManagementImpl.c +++ b/jdk/src/share/native/sun/management/VMManagementImpl.c @@ -200,6 +200,13 @@ Java_sun_management_VMManagementImpl_getStartupTime JMM_JVM_INIT_DONE_TIME_MS); } +JNIEXPORT jlong JNICALL +Java_sun_management_VMManagementImpl_getUptime0 + (JNIEnv *env, jobject dummy) +{ + return jmm_interface->GetLongAttribute(env, NULL, JMM_JVM_UPTIME_MS); +} + JNIEXPORT jboolean JNICALL Java_sun_management_VMManagementImpl_isThreadContentionMonitoringEnabled (JNIEnv *env, jobject dummy) diff --git a/jdk/test/java/lang/management/RuntimeMXBean/UpTime.java b/jdk/test/java/lang/management/RuntimeMXBean/UpTime.java index ac332caf2ce..5bfe094d8f9 100644 --- a/jdk/test/java/lang/management/RuntimeMXBean/UpTime.java +++ b/jdk/test/java/lang/management/RuntimeMXBean/UpTime.java @@ -33,30 +33,34 @@ import java.lang.management.*; public class UpTime { final static long DELAY = 5; // Seconds final static long TIMEOUT = 30; // Minutes - private static RuntimeMXBean metrics + final static long MULTIPLIER = 1000; // millisecond ticks + + private static final RuntimeMXBean metrics = ManagementFactory.getRuntimeMXBean(); public static void main(String argv[]) throws Exception { long jvmStartTime = metrics.getStartTime(); - long systemStartOuter = System.currentTimeMillis(); + // this will get an aproximate JVM uptime before starting this test + long jvmUptime = System.currentTimeMillis() - jvmStartTime; + long systemStartOuter = System_milliTime(); long metricsStart = metrics.getUptime(); - long systemStartInner = System.currentTimeMillis(); + long systemStartInner = System_milliTime(); // This JVM might have been running for some time if this test runs // in samevm mode. The sanity check should apply to the test uptime. - long testUptime = metricsStart - (systemStartOuter - jvmStartTime); + long testUptime = metricsStart - jvmUptime; // If uptime is more than 30 minutes then it looks like a bug in // the method - if (testUptime > TIMEOUT * 60 * 1000) + if (testUptime > TIMEOUT * 60 * MULTIPLIER) throw new RuntimeException("Uptime of the JVM is more than 30 " + "minutes (" - + (metricsStart / 60 / 1000) + + (metricsStart / 60 / MULTIPLIER) + " minutes)."); // Wait for DELAY seconds Object o = new Object(); - while (System.currentTimeMillis() < systemStartInner + DELAY * 1000) { + while (System_milliTime() < systemStartInner + DELAY * MULTIPLIER) { synchronized (o) { try { o.wait(DELAY * 1000); @@ -67,23 +71,27 @@ public class UpTime { } } - long systemEndInner = System.currentTimeMillis(); + long systemEndInner = System_milliTime(); long metricsEnd = metrics.getUptime(); - long systemEndOuter = System.currentTimeMillis(); + long systemEndOuter = System_milliTime(); long systemDifferenceInner = systemEndInner - systemStartInner; long systemDifferenceOuter = systemEndOuter - systemStartOuter; long metricsDifference = metricsEnd - metricsStart; // Check the flow of time in RuntimeMXBean.getUptime(). See the - // picture below - if (metricsDifference < systemDifferenceInner) + // picture below. + // The measured times can be off by 1 due to conversions from + // nanoseconds to milliseconds, using different channels to read the + // HR timer and rounding error. Bigger difference will make the test + // fail. + if (metricsDifference - systemDifferenceInner < -1) throw new RuntimeException("Flow of the time in " + "RuntimeMXBean.getUptime() (" + metricsDifference + ") is slower than " + " in system (" + systemDifferenceInner + ")"); - if (metricsDifference > systemDifferenceOuter) + if (metricsDifference - systemDifferenceOuter > 1) throw new RuntimeException("Flow of the time in " + "RuntimeMXBean.getUptime() (" + metricsDifference + ") is faster than " @@ -92,6 +100,10 @@ public class UpTime { System.out.println("Test passed."); } + + private static long System_milliTime() { + return System.nanoTime() / 1000000; // nanoseconds / milliseconds; + } } /* From 91d4d9438c2801e354aa6569e7f7773b3eae9f11 Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Mon, 11 Nov 2013 08:36:53 +0000 Subject: [PATCH 062/145] 8028099: Many com/sun/management/OperatingSystemMXBean tests failing with CCE (win) Reviewed-by: mchung --- jdk/src/windows/classes/sun/management/OperatingSystemImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java b/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java index e39b2f72141..ca766448177 100644 --- a/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java +++ b/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java @@ -25,7 +25,7 @@ package sun.management; -import java.lang.management.OperatingSystemMXBean; +import com.sun.management.OperatingSystemMXBean; /** * Implementation class for the operating system. From 4780d5d560829e4e315668c92eb797b190354d43 Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Mon, 11 Nov 2013 16:54:41 +0800 Subject: [PATCH 063/145] 8027991: InputStream should be closed in sun.security.tools.jarsigner.Main Reviewed-by: xuelei --- .../sun/security/tools/jarsigner/Main.java | 8 +-- .../tools/jarsigner/CertChainUnclosed.java | 63 +++++++++++++++++++ 2 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 jdk/test/sun/security/tools/jarsigner/CertChainUnclosed.java diff --git a/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java b/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java index e0fc5492036..0cc5052a791 100644 --- a/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java +++ b/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java @@ -1781,14 +1781,14 @@ public class Main { try { java.security.cert.Certificate[] cs = null; if (altCertChain != null) { - try { + try (FileInputStream fis = new FileInputStream(altCertChain)) { cs = CertificateFactory.getInstance("X.509"). - generateCertificates(new FileInputStream(altCertChain)). + generateCertificates(fis). toArray(new Certificate[0]); - } catch (CertificateException ex) { - error(rb.getString("Cannot.restore.certchain.from.file.specified")); } catch (FileNotFoundException ex) { error(rb.getString("File.specified.by.certchain.does.not.exist")); + } catch (CertificateException | IOException ex) { + error(rb.getString("Cannot.restore.certchain.from.file.specified")); } } else { try { diff --git a/jdk/test/sun/security/tools/jarsigner/CertChainUnclosed.java b/jdk/test/sun/security/tools/jarsigner/CertChainUnclosed.java new file mode 100644 index 00000000000..18b2eb721ef --- /dev/null +++ b/jdk/test/sun/security/tools/jarsigner/CertChainUnclosed.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8027991 + * @summary InputStream should be closed in sun.security.tools.jarsigner.Main + * @run main/othervm CertChainUnclosed + */ + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Locale; + +public class CertChainUnclosed { + + public static void main(String[] args) throws Exception { + String os = java.security.AccessController.doPrivileged( + new sun.security.action.GetPropertyAction("os.name")); + if (!os.toUpperCase(Locale.US).contains("WINDOWS")) { + System.out.println("Not Windows. Skip test."); + return; + } + + kt("-genkeypair -alias a -dname CN=A"); + kt("-exportcert -file a.crt -alias a"); + Files.copy(Paths.get(System.getProperty("test.src"), "AlgOptions.jar"), + Paths.get("test.jar")); + sun.security.tools.jarsigner.Main.main( + "-storepass changeit -keystore jks -certchain a.crt test.jar a" + .split(" ")); + + // On Windows, if the file is still opened (or not if GC was + // performed) and the next line would fail + Files.delete(Paths.get("a.crt")); + } + + static void kt(String args) throws Exception { + sun.security.tools.keytool.Main.main( + ("-keystore jks -storepass changeit -keypass changeit -keyalg rsa " + + args).split(" ")); + } +} From c10719362e9c526584a87108e1ad27b017774d5c Mon Sep 17 00:00:00 2001 From: Chris Hegarty Date: Mon, 11 Nov 2013 10:33:02 +0000 Subject: [PATCH 064/145] 8028102: All test targets, jdk/test/Makefile, fail on Windows Reviewed-by: mduigou --- jdk/test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/test/Makefile b/jdk/test/Makefile index 9a9092df16b..d8e7dd86ab9 100644 --- a/jdk/test/Makefile +++ b/jdk/test/Makefile @@ -64,7 +64,7 @@ UNAME_S := $(shell $(UNAME) -s | $(CUT) -f1 -d_) ifeq ($(UNAME_S), CYGWIN) # Location of developer shared files SLASH_JAVA = J: - GETMIXEDPATH = cygpath -m -s + GETMIXEDPATH = cygpath -m else # Location of developer shared files SLASH_JAVA = /java From 536e058b8b32097c7bee62c2b8b6beea5c084719 Mon Sep 17 00:00:00 2001 From: Michael McMahon Date: Mon, 11 Nov 2013 16:06:16 +0000 Subject: [PATCH 065/145] 8028060: test/java/net/URLPermission/nstest/lookup.sh failing (win) Reviewed-by: alanb --- .../net/URLPermission/nstest/LookupTest.java | 2 +- .../java/net/URLPermission/nstest/lookup.sh | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/jdk/test/java/net/URLPermission/nstest/LookupTest.java b/jdk/test/java/net/URLPermission/nstest/LookupTest.java index fb31e7dcda5..57309213f65 100644 --- a/jdk/test/java/net/URLPermission/nstest/LookupTest.java +++ b/jdk/test/java/net/URLPermission/nstest/LookupTest.java @@ -66,7 +66,7 @@ public class LookupTest { String cmd = args[0]; if (cmd.equals("-getport")) { port = Utils.getFreePort(); - System.out.println(port); + System.out.print(port); } else if (cmd.equals("-runtest")) { port = Integer.parseInt(args[1]); SimpleNameService.put("allowedAndFound.com", "127.0.0.1"); diff --git a/jdk/test/java/net/URLPermission/nstest/lookup.sh b/jdk/test/java/net/URLPermission/nstest/lookup.sh index b9ebb06a9ac..89cfd101d21 100644 --- a/jdk/test/java/net/URLPermission/nstest/lookup.sh +++ b/jdk/test/java/net/URLPermission/nstest/lookup.sh @@ -1,5 +1,4 @@ #!/bin/sh - # # Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -29,7 +28,19 @@ # LookupTest.java SimpleNameServiceDescriptor.java # @run shell/timeout=50 lookup.sh # -DIR=`pwd` + +OS=`uname -s` +case ${OS} in +Windows_* | CYGWIN*) + PS=";" + FS="\\" + ;; +*) + PS=":" + FS="/" + ;; +esac + port=`${TESTJAVA}/bin/java -cp ${TESTCLASSES} LookupTest -getport` @@ -45,4 +56,4 @@ grant { }; POLICY -${TESTJAVA}/bin/java -Djava.security.policy=file://${DIR}/policy -Dsun.net.spi.nameservice.provider.1=simple,sun -cp ${TESTCLASSES}:${TESTSRC} LookupTest -runtest $port +${TESTJAVA}/bin/java -Djava.security.policy=file:./policy -Dsun.net.spi.nameservice.provider.1=simple,sun -cp ${TESTCLASSES}${PS}${TESTSRC} LookupTest -runtest ${port} From cfe1c39c107f67f67a8bb312b88de2008ac5f72b Mon Sep 17 00:00:00 2001 From: Lance Andersen Date: Mon, 11 Nov 2013 14:22:22 -0500 Subject: [PATCH 066/145] 8028149: Clean-up javac -Xlint warnings in com.sun.rowset and com.sun.rowset.internal Reviewed-by: darcy --- .../share/classes/com/sun/rowset/CachedRowSetImpl.java | 2 +- .../share/classes/com/sun/rowset/internal/BaseRow.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java b/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java index 7a7f693022d..80109fd6421 100644 --- a/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java +++ b/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java @@ -541,7 +541,7 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern if (rowSetWriter != null) { Class c = rowSetWriter.getClass(); if (c != null) { - Class[] theInterfaces = c.getInterfaces(); + Class[] theInterfaces = c.getInterfaces(); for (int i = 0; i < theInterfaces.length; i++) { if ((theInterfaces[i].getName()).indexOf("TransactionalWriter") > 0) { tXWriter = true; diff --git a/jdk/src/share/classes/com/sun/rowset/internal/BaseRow.java b/jdk/src/share/classes/com/sun/rowset/internal/BaseRow.java index 814e7456f0d..dec4270e9ab 100644 --- a/jdk/src/share/classes/com/sun/rowset/internal/BaseRow.java +++ b/jdk/src/share/classes/com/sun/rowset/internal/BaseRow.java @@ -51,6 +51,11 @@ import java.util.Arrays; */ public abstract class BaseRow implements Serializable, Cloneable { +/** + * Specify the serialVersionUID + */ +private static final long serialVersionUID = 4152013523511412238L; + /** * The array containing the original values for this BaseRow * object. @@ -77,7 +82,7 @@ public abstract class BaseRow implements Serializable, Cloneable { * @param idx the index of the element to return * @return the Object value at the given index into this * row's array of original values - * @throws SQLException if there is an error + * @throws SQLException if there is an error */ public abstract Object getColumnObject(int idx) throws SQLException; @@ -90,7 +95,7 @@ public abstract class BaseRow implements Serializable, Cloneable { * @param idx the index of the element to be set * @param obj the Object to which the element at index * idx to be set - * @throws SQLException if there is an error + * @throws SQLException if there is an error */ public abstract void setColumnObject(int idx, Object obj) throws SQLException; } From fc31eabd57b4209fe7e1e15d1c96783b33be6f81 Mon Sep 17 00:00:00 2001 From: Alex Schenkman Date: Fri, 8 Nov 2013 18:16:12 +0100 Subject: [PATCH 067/145] 8014506: Test of Jdp feature Reviewed-by: sla --- .../sun/management/jdp/ClientConnection.java | 62 +++++ .../sun/management/jdp/DynamicLauncher.java | 74 ++++++ jdk/test/sun/management/jdp/JdpClient.java | 23 +- .../sun/management/jdp/JdpDefaultsTest.java | 62 +++++ .../sun/management/jdp/JdpDoSomething.java | 4 +- jdk/test/sun/management/jdp/JdpOffTest.java | 64 +++++ .../sun/management/jdp/JdpOffTestCase.java | 84 +++++++ .../sun/management/jdp/JdpOnTestCase.java | 106 +++++++++ .../jdp/JdpSpecificAddressTest.java | 65 ++++++ jdk/test/sun/management/jdp/JdpTest.sh | 2 +- jdk/test/sun/management/jdp/JdpTestCase.java | 220 ++++++++++++++++++ jdk/test/sun/management/jdp/JdpTestUtil.java | 142 +++++++++++ .../sun/management/jdp/JdpTestUtilTest.java | 81 +++++++ jdk/test/sun/management/jdp/JdpUnitTest.java | 14 +- jdk/test/sun/management/jdp/PacketTest.java | 121 ++++++++++ .../management/jdp/PortAlreadyInUseTest.java | 79 +++++++ jdk/test/sun/management/jdp/README | 74 ++++++ 17 files changed, 1256 insertions(+), 21 deletions(-) create mode 100644 jdk/test/sun/management/jdp/ClientConnection.java create mode 100644 jdk/test/sun/management/jdp/DynamicLauncher.java create mode 100644 jdk/test/sun/management/jdp/JdpDefaultsTest.java create mode 100644 jdk/test/sun/management/jdp/JdpOffTest.java create mode 100644 jdk/test/sun/management/jdp/JdpOffTestCase.java create mode 100644 jdk/test/sun/management/jdp/JdpOnTestCase.java create mode 100644 jdk/test/sun/management/jdp/JdpSpecificAddressTest.java create mode 100644 jdk/test/sun/management/jdp/JdpTestCase.java create mode 100644 jdk/test/sun/management/jdp/JdpTestUtil.java create mode 100644 jdk/test/sun/management/jdp/JdpTestUtilTest.java create mode 100644 jdk/test/sun/management/jdp/PacketTest.java create mode 100644 jdk/test/sun/management/jdp/PortAlreadyInUseTest.java create mode 100644 jdk/test/sun/management/jdp/README diff --git a/jdk/test/sun/management/jdp/ClientConnection.java b/jdk/test/sun/management/jdp/ClientConnection.java new file mode 100644 index 00000000000..b5bbe67e418 --- /dev/null +++ b/jdk/test/sun/management/jdp/ClientConnection.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.IOException; +import java.net.InetAddress; +import java.net.MulticastSocket; +import java.net.UnknownHostException; + +public class ClientConnection { + + public final String IANA_JDP_ADDRESS = "224.0.23.178"; + public final String IANA_JDP_PORT = "7095"; + public final String UNDEFINED_NAME = "TheVMwithNoName"; + + public final int port; + public final InetAddress address; + public final int pauseInSeconds; + public final String instanceName; + + public ClientConnection() + throws UnknownHostException { + + String discoveryAddress = System.getProperty("com.sun.management.jdp.address", IANA_JDP_ADDRESS); + address = InetAddress.getByName(discoveryAddress); + + String discoveryPort = System.getProperty("com.sun.management.jdp.port", IANA_JDP_PORT); + port = Integer.parseInt(discoveryPort); + + String pause = System.getProperty("com.sun.management.jdp.pause", "1"); + pauseInSeconds = Integer.parseUnsignedInt(pause); + + instanceName = System.getProperty("com.sun.management.jdp.name", UNDEFINED_NAME); + + } + + public MulticastSocket connectWithTimeout(int msTimeOut) throws IOException { + MulticastSocket socket = new MulticastSocket(port); + socket.joinGroup(address); + socket.setSoTimeout(msTimeOut); + return socket; + } +} diff --git a/jdk/test/sun/management/jdp/DynamicLauncher.java b/jdk/test/sun/management/jdp/DynamicLauncher.java new file mode 100644 index 00000000000..e6e332058d7 --- /dev/null +++ b/jdk/test/sun/management/jdp/DynamicLauncher.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + +import jdk.testlibrary.OutputAnalyzer; +import jdk.testlibrary.ProcessTools; +import jdk.testlibrary.Utils; + +import java.util.UUID; + + +/** + * This class will try to find an unused port and run a JdpTestCase using it. + * The unused port is needed for jmxremote.port. + * The problem with busy ports arises when running many automated tests on the same host. + * Note that jdp.port is a multicast port and thus it can be binded by different processes at the same time. + */ +public abstract class DynamicLauncher { + + final String jdpName = UUID.randomUUID().toString(); + int jmxPort; + + protected void run() throws Exception { + OutputAnalyzer out; + int retries = 1; + boolean tryAgain; + + do { + tryAgain = false; + jmxPort = Utils.getFreePort(); + out = runVM(); + try { + out.shouldNotContain("Port already in use"); + } catch (RuntimeException e) { + if (retries < 3) { + retries++; + tryAgain = true; + } + } + } while (tryAgain); + } + + protected OutputAnalyzer runVM() throws Exception { + String[] options = this.options(); + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(options); + OutputAnalyzer out = new OutputAnalyzer(pb.start()); + System.out.println(out.getStdout()); + System.err.println(out.getStderr()); + return out; + } + + protected abstract String[] options(); + +} diff --git a/jdk/test/sun/management/jdp/JdpClient.java b/jdk/test/sun/management/jdp/JdpClient.java index 992c45e1af5..3b6fa95a9ca 100644 --- a/jdk/test/sun/management/jdp/JdpClient.java +++ b/jdk/test/sun/management/jdp/JdpClient.java @@ -36,6 +36,7 @@ import java.nio.channels.Selector; import java.util.Collections; import java.util.Enumeration; import java.util.Map; + import sun.management.jdp.JdpException; import sun.management.jdp.JdpJmxPacket; import sun.management.jdp.JdpPacketReader; @@ -49,21 +50,21 @@ public class JdpClient { private static int maxPacketCount = 1; private static int maxEmptyPacketCount = 10; - private void get(Map map, String key) - throws JdpException { + private void get(Map map, String key) + throws JdpException { if (map.get(key) == null) { - throw new JdpException("Test failed, packet field " + key + " missed"); + throw new JdpException("Test failed, packet field " + key + " missed"); } } private void checkFieldPresence(JdpJmxPacket p) - throws IOException, JdpException { + throws IOException, JdpException { byte[] b = p.getPacketData(); JdpPacketReader reader = new JdpPacketReader(b); - Map pMap = reader.getDiscoveryDataAsMap(); + Map pMap = reader.getDiscoveryDataAsMap(); get(pMap, JdpJmxPacket.UUID_KEY); get(pMap, JdpJmxPacket.MAIN_CLASS_KEY); @@ -102,11 +103,11 @@ public class JdpClient { sel.select(10 * 1000); channel.receive(buf); - if (buf.position() == 0 ){ - if (JdpDoSomething.getVerbose()){ + if (buf.position() == 0) { + if (JdpDoSomething.getVerbose()) { System.err.println("Empty packet received"); } - if (++emptyPacketsCount > maxEmptyPacketCount){ + if (++emptyPacketsCount > maxEmptyPacketCount) { throw new RuntimeException("Test failed, maxEmptyPacketCount reached"); } @@ -120,8 +121,8 @@ public class JdpClient { JdpJmxPacket packet = new JdpJmxPacket(dgramData); JdpDoSomething.printJdpPacket(packet); checkFieldPresence(packet); - if(++count > maxPacketCount){ - break; + if (++count > maxPacketCount) { + break; } } catch (JdpException e) { e.printStackTrace(); @@ -179,7 +180,7 @@ public class JdpClient { PacketListener listener = new PacketListener(channel); new Thread(listener, "Jdp Client").start(); - } catch (RuntimeException e){ + } catch (RuntimeException e) { System.out.println("Test failed."); } catch (Exception e) { e.printStackTrace(); diff --git a/jdk/test/sun/management/jdp/JdpDefaultsTest.java b/jdk/test/sun/management/jdp/JdpDefaultsTest.java new file mode 100644 index 00000000000..9067be7cc05 --- /dev/null +++ b/jdk/test/sun/management/jdp/JdpDefaultsTest.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * A JVM with JDP on should send multicast JDP packets regularly. + * + * @author Alex Schenkman + * @test JdpDefaultsTest + * @summary Assert that we can read JDP packets from a multicast socket connection, on default IP and port. + * @library /lib/testlibrary + * @build ClientConnection JdpTestUtil JdpTestCase JdpOnTestCase DynamicLauncher + * @run main JdpDefaultsTest + */ + +public class JdpDefaultsTest extends DynamicLauncher { + + final String testName = "JdpOnTestCase"; + + public static void main(String[] args) throws Exception { + DynamicLauncher launcher = new JdpDefaultsTest(); + launcher.run(); + } + + /** + * Send Jdp multicast packets to the default IP and port, 224.0.23.178:7095 + */ + protected String[] options() { + String[] options = { + "-Dcom.sun.management.jmxremote.authenticate=false", + "-Dcom.sun.management.jmxremote.ssl=false", + "-Dcom.sun.management.jmxremote=true", + "-Dcom.sun.management.jmxremote.port=" + String.valueOf(jmxPort), + "-Dcom.sun.management.jmxremote.autodiscovery=true", + "-Dcom.sun.management.jdp.pause=1", + "-Dcom.sun.management.jdp.name=" + jdpName, + "-Dcom.sun.management.jdp.address=224.0.23.178", + "-Djava.util.logging.SimpleFormatter.format='%1$tF %1$tT %4$-7s %5$s %n'", + testName + }; + return options; + } +} diff --git a/jdk/test/sun/management/jdp/JdpDoSomething.java b/jdk/test/sun/management/jdp/JdpDoSomething.java index 56032df8329..3c5f0484259 100644 --- a/jdk/test/sun/management/jdp/JdpDoSomething.java +++ b/jdk/test/sun/management/jdp/JdpDoSomething.java @@ -34,7 +34,7 @@ public class JdpDoSomething { private static final String lockFileName = "JdpDoSomething.lck"; private static final boolean verbose = false; - public static boolean getVerbose(){ + public static boolean getVerbose() { return verbose; } @@ -61,7 +61,7 @@ public class JdpDoSomething { } public static void compaireJdpPacketEx(JdpJmxPacket p1, JdpJmxPacket p2) - throws JdpException { + throws JdpException { if (!Objects.equals(p1, p1)) { throw new JdpException("Packet mismatch error"); diff --git a/jdk/test/sun/management/jdp/JdpOffTest.java b/jdk/test/sun/management/jdp/JdpOffTest.java new file mode 100644 index 00000000000..7810400abbe --- /dev/null +++ b/jdk/test/sun/management/jdp/JdpOffTest.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * A JVM with JDP off should not send multicast JDP packets at all. + * com.sun.management.jmxremote.autodiscovery=false should be respected. + * + * @author Alex Schenkman + * @test JdpOffTest.java + * @summary Assert that no JDP packets are sent to the default address and port. + * @library /lib/testlibrary + * @build ClientConnection JdpTestUtil JdpTestCase JdpOffTestCase DynamicLauncher + * @run main JdpOffTest + */ + + +public class JdpOffTest extends DynamicLauncher { + + final String testName = "JdpOffTestCase"; + + public static void main(String[] args) throws Exception { + DynamicLauncher launcher = new JdpOffTest(); + launcher.run(); + } + + /** + * Send Jdp multicast packets to the specified IP and port, 224.0.1.2:1234 + */ + protected String[] options() { + String[] options = { + "-Dcom.sun.management.jmxremote.authenticate=false", + "-Dcom.sun.management.jmxremote.ssl=false", + "-Dcom.sun.management.jmxremote=true", + "-Dcom.sun.management.jmxremote.port=" + String.valueOf(jmxPort), + "-Dcom.sun.management.jmxremote.autodiscovery=false", + "-Dcom.sun.management.jdp.pause=1", + "-Dcom.sun.management.jdp.name=" + jdpName, + "-Djava.util.logging.SimpleFormatter.format='%1$tF %1$tT %4$-7s %5$s %n'", + testName + }; + return options; + } + +} diff --git a/jdk/test/sun/management/jdp/JdpOffTestCase.java b/jdk/test/sun/management/jdp/JdpOffTestCase.java new file mode 100644 index 00000000000..180f18bef00 --- /dev/null +++ b/jdk/test/sun/management/jdp/JdpOffTestCase.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * A JVM with JDP off should not send multicast JDP packets at all. + * com.sun.management.jmxremote.autodiscovery=false should be respected. + */ + +import java.net.SocketTimeoutException; +import java.util.Map; + +public class JdpOffTestCase extends JdpTestCase { + + private boolean testPassed = false; + + public JdpOffTestCase(ClientConnection connection) { + super(connection); + } + + /** + * Subclasses: JdpOnTestCase and JdpOffTestCase have different messages. + */ + @Override + protected String initialLogMessage() { + return "Expecting NOT to receive any packets with jdp.name=" + connection.instanceName; + } + + /** + * The socket has not received anything, and this is the expected behavior. + */ + @Override + protected void onSocketTimeOut(SocketTimeoutException e) throws Exception { + log.fine("No packages received. Test passed!"); + testPassed = true; + } + + + /** + * This method is executed after a correct Jdp packet, coming from this VM has been received. + * + * @param payload A dictionary containing the data if the received Jdp packet. + */ + @Override + protected void packetFromThisVMReceived(Map payload) throws Exception { + String message = "Jdp packet from this VM received. This should not happen!"; + log.severe(message); + throw new Exception(message); + } + + + /** + * The test should stop after the socket has timed out. See onSocketTimeOut {@link}. + */ + @Override + protected boolean shouldContinue() { + return !testPassed; + } + + public static void main(String[] args) throws Exception { + JdpTestCase client = new JdpOffTestCase(new ClientConnection()); + client.run(); + } + +} diff --git a/jdk/test/sun/management/jdp/JdpOnTestCase.java b/jdk/test/sun/management/jdp/JdpOnTestCase.java new file mode 100644 index 00000000000..107ca5a9397 --- /dev/null +++ b/jdk/test/sun/management/jdp/JdpOnTestCase.java @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * A JVM with JDP on should send multicast JDP packets regularly. + * + * See main for more information on running this test manually. + * See Launcher classes for automated runs. + * + */ + +import java.net.SocketTimeoutException; +import java.util.Map; + +public class JdpOnTestCase extends JdpTestCase { + + private int receivedJDPpackets = 0; + + public JdpOnTestCase(ClientConnection connection) { + super(connection); + } + + /** + * Subclasses: JdpOnTestCase and JdpOffTestCase have different messages. + */ + @Override + protected String initialLogMessage() { + return "Waiting for 3 packets with jdp.name=" + connection.instanceName; + } + + /** + * This method is executed after a correct Jdp packet (coming from this VM) has been received. + * + * @param payload A dictionary containing the data if the received Jdp packet. + */ + protected void packetFromThisVMReceived(Map payload) { + receivedJDPpackets++; + final String jdpName = payload.get("INSTANCE_NAME"); + log.fine("Received correct JDP packet #" + String.valueOf(receivedJDPpackets) + + ", jdp.name=" + jdpName); + } + + /** + * The socket should not timeout. + * It is set to wait for 10 times the defined pause between Jdp packet. See JdpOnTestCase.TIME_OUT_FACTOR. + */ + @Override + protected void onSocketTimeOut(SocketTimeoutException e) throws Exception { + String message = "Timed out waiting for JDP packet. Should arrive within " + + connection.pauseInSeconds + " seconds, but waited for " + + timeOut + " seconds."; + log.severe(message); + throw new Exception(message, e); + } + + /** + * After receiving three Jdp packets the test should end. + */ + @Override + protected boolean shouldContinue() { + return receivedJDPpackets < 3; + } + + /** + * To run this test manually you might need the following VM options: + *

      + * -Dcom.sun.management.jmxremote.authenticate=false + * -Dcom.sun.management.jmxremote.ssl=false + * -Dcom.sun.management.jmxremote.port=4711 (or some other port number) + * -Dcom.sun.management.jmxremote=true + * -Dcom.sun.management.jmxremote.autodiscovery=true + * -Dcom.sun.management.jdp.pause=1 + * -Dcom.sun.management.jdp.name=alex (or some other string to identify this VM) + *

      + * Recommended for nice output: + * -Djava.util.logging.SimpleFormatter.format="%1$tF %1$tT %4$-7s %5$s %n" + * + * @param args + * @throws Exception + */ + public static void main(String[] args) throws Exception { + JdpTestCase client = new JdpOnTestCase(new ClientConnection()); + client.run(); + } + +} diff --git a/jdk/test/sun/management/jdp/JdpSpecificAddressTest.java b/jdk/test/sun/management/jdp/JdpSpecificAddressTest.java new file mode 100644 index 00000000000..8a791766d85 --- /dev/null +++ b/jdk/test/sun/management/jdp/JdpSpecificAddressTest.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * A JVM with JDP on should send multicast JDP packets regularly. + * + * @author Alex Schenkman + * @test JdpSpecificAddressTest + * @summary Assert that we can read JDP packets from a multicast socket connection, on specific IP and port. + * @library /lib/testlibrary + * @build ClientConnection JdpTestUtil JdpTestCase JdpOnTestCase DynamicLauncher + * @run main JdpSpecificAddressTest + */ + + +public class JdpSpecificAddressTest extends DynamicLauncher { + + final String testName = "JdpOnTestCase"; + + public static void main(String[] args) throws Exception { + DynamicLauncher launcher = new JdpSpecificAddressTest(); + launcher.run(); + } + + /** + * Send Jdp multicast packets to the specified IP and port, 224.0.1.2:1234 + */ + protected String[] options() { + String[] options = { + "-Dcom.sun.management.jmxremote.authenticate=false", + "-Dcom.sun.management.jmxremote.ssl=false", + "-Dcom.sun.management.jmxremote=true", + "-Dcom.sun.management.jmxremote.port=" + String.valueOf(jmxPort), + "-Dcom.sun.management.jmxremote.autodiscovery=true", + "-Dcom.sun.management.jdp.pause=1", + "-Dcom.sun.management.jdp.name=" + jdpName, + "-Dcom.sun.management.jdp.address=224.0.1.2", + "-Dcom.sun.management.jdp.port=1234", + "-Djava.util.logging.SimpleFormatter.format='%1$tF %1$tT %4$-7s %5$s %n'", + testName + }; + return options; + } + +} diff --git a/jdk/test/sun/management/jdp/JdpTest.sh b/jdk/test/sun/management/jdp/JdpTest.sh index 20265f4a2b2..cd482028b05 100644 --- a/jdk/test/sun/management/jdp/JdpTest.sh +++ b/jdk/test/sun/management/jdp/JdpTest.sh @@ -33,7 +33,7 @@ _compile=yes # temporary disable jcmd related tests # _testsuite="01,02,03,04,05" -_testsuite="01,02,04" +_testsuite="01" _pwd=`pwd` diff --git a/jdk/test/sun/management/jdp/JdpTestCase.java b/jdk/test/sun/management/jdp/JdpTestCase.java new file mode 100644 index 00000000000..fbd0d72ecb3 --- /dev/null +++ b/jdk/test/sun/management/jdp/JdpTestCase.java @@ -0,0 +1,220 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * A JVM with JDP on should send multicast JDP packets regularly. + * Look at JdpOnTestCase.java and JdpOffTestCase.java + */ + + +import sun.management.jdp.JdpJmxPacket; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.DatagramPacket; +import java.net.MulticastSocket; +import java.net.SocketTimeoutException; +import java.util.Arrays; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +public abstract class JdpTestCase { + final Logger log = Logger.getLogger("sun.management.jdp"); + final int MAGIC = 0xC0FFEE42; // Jdp magic number. + private static final int BUFFER_LENGTH = 64 * 1024; // max UDP size, except for IPv6 jumbograms. + private final int TIME_OUT_FACTOR = 10; // Socket times out after 10 times the jdp pause. + protected int timeOut; + private long startTime; + protected ClientConnection connection; + + public JdpTestCase(ClientConnection connection) { + this.connection = connection; + JdpTestUtil.enableConsoleLogging(log, Level.ALL); + } + + public void run() throws Exception { + log.fine("Test started."); + log.fine("Listening for multicast packets at " + connection.address.getHostAddress() + + ":" + String.valueOf(connection.port)); + log.fine(initialLogMessage()); + log.fine("Pause in between packets is: " + connection.pauseInSeconds + " seconds."); + + startTime = System.currentTimeMillis(); + timeOut = connection.pauseInSeconds * TIME_OUT_FACTOR; + log.fine("Timeout set to " + String.valueOf(timeOut) + " seconds."); + + MulticastSocket socket = connection.connectWithTimeout(timeOut * 1000); + + byte[] buffer = new byte[BUFFER_LENGTH]; + DatagramPacket datagram = new DatagramPacket(buffer, buffer.length); + + do { + try { + socket.receive(datagram); + onReceived(extractUDPpayload(datagram)); + } catch (SocketTimeoutException e) { + onSocketTimeOut(e); + } + + if (hasTestLivedLongEnough()) { + shutdown(); + } + + } while (shouldContinue()); + log.fine("Test ended successfully."); + } + + /** + * Subclasses: JdpOnTestCase and JdpOffTestCase have different messages. + */ + protected abstract String initialLogMessage(); + + + /** + * Executed when the socket receives a UDP packet. + */ + private void onReceived(byte[] packet) throws Exception { + if (isJDP(packet)) { + Map payload = checkStructure(packet); + jdpPacketReceived(payload); + } else { + log.fine("Non JDP packet received, ignoring it."); + } + } + + /** + * Determine whether the test should end. + * + * @return + */ + abstract protected boolean shouldContinue(); + + /** + * This method is executed when the socket has not received any packet for timeOut seconds. + */ + abstract protected void onSocketTimeOut(SocketTimeoutException e) throws Exception; + + /** + * This method is executed after a correct Jdp packet has been received. + * + * @param payload A dictionary containing the data if the received Jdp packet. + */ + private void jdpPacketReceived(Map payload) throws Exception { + final String instanceName = payload.get("INSTANCE_NAME"); + if (instanceName.equals(connection.instanceName)) { + packetFromThisVMReceived(payload); + } else { + packetFromOtherVMReceived(payload); + } + } + + /** + * This method is executed after a correct Jdp packet, coming from this VM has been received. + * + * @param payload A dictionary containing the data if the received Jdp packet. + */ + protected abstract void packetFromThisVMReceived(Map payload) throws Exception; + + + /** + * This method is executed after a correct Jdp packet, coming from another VM has been received. + * + * @param payload A dictionary containing the data if the received Jdp packet. + */ + protected void packetFromOtherVMReceived(Map payload) { + final String jdpName = payload.get("INSTANCE_NAME"); + log.fine("Ignoring JDP packet sent by other VM, jdp.name=" + jdpName); + } + + + /** + * The test should stop if it has been 12 times the jdp.pause. + * jdp.pause is how many seconds in between packets. + *

      + * This timeout (12 times)is slightly longer than the socket timeout (10 times) on purpose. + * In the off test case, the socket should time out first. + * + * @return + */ + protected boolean hasTestLivedLongEnough() { + long now = System.currentTimeMillis(); + boolean haslivedLongEnough = (now - startTime) > (timeOut * 1.2 * 1000); + return haslivedLongEnough; + } + + /** + * This exit condition arises when we receive UDP packets but they are not valid Jdp. + */ + protected void shutdown() throws Exception { + log.severe("Shutting down the test."); + throw new Exception("Not enough JDP packets received before timeout!"); + } + + /** + * Assert that this Jdp packet contains the required two keys. + *

      + * We expect zero packet corruption and thus fail on the first corrupted packet. + * This might need revision. + */ + protected Map checkStructure(byte[] packet) throws UnsupportedEncodingException { + Map payload = JdpTestUtil.readPayload(packet); + assertTrue(payload.size() >= 2, "JDP should have minimun 2 entries."); + assertTrue(payload.get(JdpJmxPacket.UUID_KEY).length() > 0); + assertTrue(payload.get(JdpJmxPacket.JMX_SERVICE_URL_KEY).length() > 0); + return payload; + } + + + /** + * Check if packet has correct JDP magic number. + * + * @param packet + * @return + * @throws IOException + */ + private boolean isJDP(byte[] packet) throws IOException { + int magic = JdpTestUtil.decode4ByteInt(packet, 0); + return (magic == MAGIC); + } + + private byte[] extractUDPpayload(DatagramPacket datagram) { + byte[] data = Arrays.copyOf(datagram.getData(), datagram.getLength()); + return data; + } + + /** + * Hack until I find a way to use TestNG's assertions. + */ + private void assertTrue(boolean assertion, String message) { + if (assertion == false) { + log.severe(message); + assert (false); + } + } + + private void assertTrue(boolean assertion) { + assertTrue(assertion, ""); + } + +} diff --git a/jdk/test/sun/management/jdp/JdpTestUtil.java b/jdk/test/sun/management/jdp/JdpTestUtil.java new file mode 100644 index 00000000000..353c118e624 --- /dev/null +++ b/jdk/test/sun/management/jdp/JdpTestUtil.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + +import java.io.UnsupportedEncodingException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.ConsoleHandler; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Utility methods for parsing raw JDP packets. + * + * @author Alex Schenkman + */ +public class JdpTestUtil { + + static final int HEADER_SIZE = 4 + 2; // magic + protocol version + + /** + * Reads two bytes, starting at the given position, + * and converts them into an int. + * + * @param data + * @param pos + * @return + */ + static int decode2ByteInt(byte[] data, int pos) { + return (((data[pos] & 0xFF) << 8) | (data[pos + 1] & 0xFF)); + } + + /** + * Reads four bytes, starting at the given position, + * and converts them into an int. + * + * @param data + * @param pos + * @return + */ + static int decode4ByteInt(byte[] data, int pos) { + int result = data[pos + 3] & 0xFF; + result = result | ((data[pos + 2] & 0xFF) << 8); + result = result | ((data[pos + 1] & 0xFF) << 16); + result = result | ((data[pos] & 0xFF) << 24); + return result; + } + + /** + * Reads an entry from the given byte array, starting at the given position. + * This is an internal function used by @see readRawPayload(byte[] rawPayload, int size). + *

      + * The format of an entry is: + * 2 bytes with the size of the following string. + * n bytes of characters. + * + * @param data + * @param pos + * @return + * @throws UnsupportedEncodingException + */ + static String decodeEntry(byte[] data, int pos) + throws UnsupportedEncodingException { + + int size = JdpTestUtil.decode2ByteInt(data, pos); + pos = pos + 2; + byte[] raw = Arrays.copyOfRange(data, pos, pos + size); + return new String(raw, "UTF-8"); + } + + /** + * Builds a Map with the payload, from the raw data. + * + * @param rawData + * @return + * @throws UnsupportedEncodingException + */ + static Map readPayload(byte[] rawData) + throws UnsupportedEncodingException { + + int totalSize = rawData.length; + int payloadSize = totalSize - HEADER_SIZE; + byte[] rawPayload = Arrays.copyOfRange(rawData, HEADER_SIZE, HEADER_SIZE + payloadSize); + Map payload = readRawPayload(rawPayload, payloadSize); + return payload; + } + + /** + * Builds a map from the payload's raw data. + * This is an internal function used by @see readPayload(byte[] rawData) + * + * @param rawPayload + * @param size + * @return + * @throws UnsupportedEncodingException + */ + static Map readRawPayload(byte[] rawPayload, int size) + throws UnsupportedEncodingException { + + String key, value; + Map payload = new HashMap(); + + for (int pos = 0; pos < size; ) { + key = decodeEntry(rawPayload, pos); + pos = pos + 2 + key.length(); + value = decodeEntry(rawPayload, pos); + pos = pos + 2 + value.length(); + + payload.put(key, value); + } + return payload; + } + + static void enableConsoleLogging(Logger log, Level level) throws SecurityException { + ConsoleHandler handler = new ConsoleHandler(); + handler.setLevel(level); + log.addHandler(handler); + log.setLevel(level); + } + +} diff --git a/jdk/test/sun/management/jdp/JdpTestUtilTest.java b/jdk/test/sun/management/jdp/JdpTestUtilTest.java new file mode 100644 index 00000000000..adbd104886b --- /dev/null +++ b/jdk/test/sun/management/jdp/JdpTestUtilTest.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + +import org.testng.annotations.Test; + +import java.io.UnsupportedEncodingException; +import java.util.Map; + +import static jdk.testlibrary.Asserts.assertEquals; + + +/* + Unit test for the utility functions in JdpTestUtil. + These are not meant to be by automatically run by JTREG. + They exists to support test development and should be run by the test developer. +*/ + +public class JdpTestUtilTest { + + @Test + public void testDecodeEntry() throws UnsupportedEncodingException { + byte[] data = {'x', 0, 4, 'a', 'l', 'e', 'x'}; + String result = JdpTestUtil.decodeEntry(data, 1); + assertEquals("alex", result); + } + + @Test + public void testDecode2ByteInt() { + byte[] data = {'x', (byte) 0xff, (byte) 0xff}; + int value = JdpTestUtil.decode2ByteInt(data, 1); + assertEquals(65535, value); + } + + @Test + public void testDecode4ByteInt() { + byte[] data = {'x', (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff}; + int value = JdpTestUtil.decode4ByteInt(data, 1); + assertEquals(0xffffffff, value); + + } + + @Test + public void testReadRawPayload() throws UnsupportedEncodingException { + byte[] data = {0, 3, 'f', 'o', 'o', 0, 4, 'b', 'a', 'r', 's'}; + Map payload = JdpTestUtil.readRawPayload(data, data.length); + + assertEquals(1, payload.size()); + assertEquals("bars", payload.get("foo")); + } + + @Test + public void testReadPayload() throws UnsupportedEncodingException { + byte[] data = {1, 2, 3, 4, 1, 2, 0, 3, 'f', 'o', 'o', 0, 4, 'b', 'a', 'r', 's'}; + Map payload = JdpTestUtil.readPayload(data); + + assertEquals(1, payload.size()); + assertEquals("bars", payload.get("foo")); + } + +} diff --git a/jdk/test/sun/management/jdp/JdpUnitTest.java b/jdk/test/sun/management/jdp/JdpUnitTest.java index 2bd61407378..ca549400f0b 100644 --- a/jdk/test/sun/management/jdp/JdpUnitTest.java +++ b/jdk/test/sun/management/jdp/JdpUnitTest.java @@ -33,22 +33,22 @@ import sun.management.jdp.JdpException; public class JdpUnitTest { - static byte[] russian_name = {(byte)0xd0,(byte)0xbf,(byte)0xd1,(byte)0x80,(byte)0xd0,(byte)0xbe,(byte)0xd0,(byte)0xb2, - (byte)0xd0,(byte)0xb5,(byte)0xd1,(byte)0x80,(byte)0xd0,(byte)0xba,(byte)0xd0,(byte)0xb0, - (byte)0x20,(byte)0xd1,(byte)0x81,(byte)0xd0,(byte)0xb2,(byte)0xd1,(byte)0x8f,(byte)0xd0, - (byte)0xb7,(byte)0xd0,(byte)0xb8,(byte)0x0a}; + static byte[] russian_name = {(byte) 0xd0, (byte) 0xbf, (byte) 0xd1, (byte) 0x80, (byte) 0xd0, (byte) 0xbe, (byte) 0xd0, (byte) 0xb2, + (byte) 0xd0, (byte) 0xb5, (byte) 0xd1, (byte) 0x80, (byte) 0xd0, (byte) 0xba, (byte) 0xd0, (byte) 0xb0, + (byte) 0x20, (byte) 0xd1, (byte) 0x81, (byte) 0xd0, (byte) 0xb2, (byte) 0xd1, (byte) 0x8f, (byte) 0xd0, + (byte) 0xb7, (byte) 0xd0, (byte) 0xb8, (byte) 0x0a}; /** * This test tests that complete packet is build correctly */ public static void PacketBuilderTest() - throws IOException, JdpException { + throws IOException, JdpException { /* Complete packet test */ { JdpJmxPacket p1 = new JdpJmxPacket(UUID.randomUUID(), "fake://unit-test"); p1.setMainClass("FakeUnitTest"); - p1.setInstanceName( new String(russian_name,"UTF-8")); + p1.setInstanceName(new String(russian_name, "UTF-8")); byte[] b = p1.getPacketData(); JdpJmxPacket p2 = new JdpJmxPacket(b); @@ -68,7 +68,7 @@ public class JdpUnitTest { JdpDoSomething.compaireJdpPacketEx(p1, p2); } - System.out.println("OK: Test passed"); + System.out.println("OK: Test passed"); } diff --git a/jdk/test/sun/management/jdp/PacketTest.java b/jdk/test/sun/management/jdp/PacketTest.java new file mode 100644 index 00000000000..1fdcaf7b64c --- /dev/null +++ b/jdk/test/sun/management/jdp/PacketTest.java @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + +import java.io.IOException; +import java.util.Map; +import java.util.UUID; + +import org.testng.annotations.Test; +import sun.management.jdp.JdpJmxPacket; + +import static org.testng.Assert.assertEquals; + + +/** + * These tests are unit tests used for test development. + * These are not meant to be by automatically run by JTREG. + * They exists to support test development and should be run by the test developer. + *

      + *

      + * The JDP packet format: + *

      + * packet = header + payload + *

      + * header = magic + version + * magic = 4 bytes: 0xCOFFEE42 + * version = 2 bytes: 01 (As of 2013-05-01) + *

      + * payload = list key/value pairs + * keySize = 2 bytes + * key = (keySize) bytes + * valueSize = 2 bytes + * value = (valueSize) bytes + *

      + *

      + * Two entries are mandatory in the payload: + * UUID (JdpJmxPacket.UUID_KEY) + * JMX service URL (JdpJmxPacket.JMX_SERVICE_URL_KEY) + *

      + * These two entries are optional: + * Main Class (JdpJmxPacket.MAIN_CLASS_KEY) + * Instance name (JdpJmxPacket.INSTANCE_NAME_KEY) + * + * @author Alex Schenkman + *

      + * Using TestNG framework. + */ +public class PacketTest { + + final int MAGIC = 0xC0FFEE42; + final UUID id = UUID.randomUUID(); + final String mainClass = "org.happy.Feet"; + final String jmxServiceUrl = "fake://jmxUrl"; + final String instanceName = "Joe"; + + private JdpJmxPacket createDefaultPacket() { + JdpJmxPacket packet = new JdpJmxPacket(id, jmxServiceUrl); + return packet; + } + + private JdpJmxPacket createFullPacket() { + JdpJmxPacket packet = new JdpJmxPacket(id, jmxServiceUrl); + packet.setMainClass(mainClass); + packet.setInstanceName("Joe"); + return packet; + } + + @Test + public void testMagic() throws IOException { + byte[] rawData = createFullPacket().getPacketData(); + int magic = JdpTestUtil.decode4ByteInt(rawData, 0); + assertEquals(MAGIC, magic, "MAGIC does not match!"); + } + + @Test + public void testVersion() throws IOException { + byte[] rawData = createFullPacket().getPacketData(); + assertEquals(1, JdpTestUtil.decode2ByteInt(rawData, 4)); + } + + @Test + public void testAllEntries() throws IOException { + byte[] rawData = createFullPacket().getPacketData(); + Map payload = JdpTestUtil.readPayload(rawData); + + assertEquals(4, payload.size()); + assertEquals(mainClass, payload.get(JdpJmxPacket.MAIN_CLASS_KEY)); + assertEquals(id.toString(), payload.get(JdpJmxPacket.UUID_KEY)); + assertEquals(jmxServiceUrl, payload.get(JdpJmxPacket.JMX_SERVICE_URL_KEY)); + assertEquals(instanceName, payload.get(JdpJmxPacket.INSTANCE_NAME_KEY)); + } + + public void testDefaultEntries() throws IOException { + byte[] rawData = createDefaultPacket().getPacketData(); + Map payload = JdpTestUtil.readPayload(rawData); + + assertEquals(2, payload.size()); + assertEquals(id.toString(), payload.get(JdpJmxPacket.UUID_KEY)); + assertEquals(jmxServiceUrl, payload.get(JdpJmxPacket.JMX_SERVICE_URL_KEY)); + } +} diff --git a/jdk/test/sun/management/jdp/PortAlreadyInUseTest.java b/jdk/test/sun/management/jdp/PortAlreadyInUseTest.java new file mode 100644 index 00000000000..fb82f0d8738 --- /dev/null +++ b/jdk/test/sun/management/jdp/PortAlreadyInUseTest.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + +import jdk.testlibrary.OutputAnalyzer; +import jdk.testlibrary.Utils; + +import java.io.IOException; +import java.net.ServerSocket; +import java.util.logging.Logger; + +/** + * This test used for test development and it is not meant to be run by JTReg. + *

      + * This test exercises a retry mechanism to avoid a test failure because of + * starting the VM on a busy jmxremote.port. + *

      + * To run this test you'll need to add this VM option: -Dtest.jdk= + */ +public class PortAlreadyInUseTest extends DynamicLauncher { + + ServerSocket socket; + final Logger log = Logger.getLogger("PortAlreadyInUse"); + + protected void go() throws Exception { + jmxPort = Utils.getFreePort(); + occupyPort(); + + log.info("Attempting to start a VM using the same port."); + OutputAnalyzer out = this.runVM(); + out.shouldContain("Port already in use"); + log.info("Failed as expected."); + + log.info("Trying again using retries."); + this.run(); + } + + private void occupyPort() throws IOException { + socket = new ServerSocket(jmxPort); + log.info("Occupying port " + String.valueOf(jmxPort)); + } + + protected String[] options() { + String[] options = { + "-Dcom.sun.management.jmxremote.authenticate=false", + "-Dcom.sun.management.jmxremote.ssl=false", + "-Dcom.sun.management.jmxremote=true", + "-Dcom.sun.management.jmxremote.port=" + String.valueOf(jmxPort), + "-version" + }; + return options; + } + + public static void main(String[] args) throws Exception { + PortAlreadyInUseTest test = new PortAlreadyInUseTest(); + test.go(); + } + +} diff --git a/jdk/test/sun/management/jdp/README b/jdk/test/sun/management/jdp/README new file mode 100644 index 00000000000..ba4e69656d6 --- /dev/null +++ b/jdk/test/sun/management/jdp/README @@ -0,0 +1,74 @@ +The following test were contributed by dmitry.samersoff@oracle.com and will be ported in the near future: +JdpClient.java +JdpDoSomething.java +JdpTest.sh +JdpUnitTest.java + + +JdpTest.sh: +------------------------------------- +test_01 - basic test, check if JDP packet assembler and other + parts of JDP is not broken + +test_02 - test if JDP starts with custom parameters. (disabled) + +test_03 - test if jcmd is able to start jdp with + custom parameters (disabled) + +test_04 - test if JDP starts with default parameters (disabled) + +test_05 - test if jcmd is able to start jdp with default + parameters (disabled) + +Only test_01 is enabled at the moment. + +JdpUnitTest.java: contains unit tests used under development. + + +========================================================================== +The other Java-based tests in this folder are contributed by alex.schenkman@oracle.com + +There are three Jdp test cases in this folder: + 1) Jdp is turned off. + 2) Jdp is turned on, using default values + 3) Jdp is turned on, using a specific IP and port + +For the test cases above, the actual tests are: + 1) JdpOffTestCase.java + 2) JdpOnTestCase.java + 3) JdpOnTestCase.java, using different parameters. +All these three test are implemented as subclasses of JdpTestCase.java. + +For all of these three tests, the VM sending the Jdp packets is also catching them. +That is, while the VM itself is sending Jdp multicast packets, the program executed by +that same VM is listening for those packets. + +These tests above work as follows: + 1) Start a VM with Jdp off, make sure that no Jdp packets arrive at the default IP/port. + 2) Start a VM with Jdp on, make sure three packets arrive at the default IP/port. + 3) Start a VM with Jdp on a specific IP/port, make sure three packets arrive. + +To make sure that we are not catching Jdp packets from some other VM, the INSTANCE_NAME +attribute is set to a unique id. The setting of this unique id is done by a launcher. +There are three launchers, one for each of the tests above: + 1) JdpOffTest.java + 2) JdpDefaultsTest.java + 3) JdpSpecificAddressTest.java +All these three tests are implemented as subclasses of DynamicLauncher.java. + +So, JdpOffTest.class will execute JdpOffTestCase.class (using ProcessTools), +and that will exercise test case nr.1; and so on for the other cases. + +These launchers are also the entry points for JTreg. +This means that JTreg will only see these launchers as tests. +You might run the tests without JTreg, as long as you specify all the VM optiones needed. +Look at the launcher to determine what is needed. Do not forget -Dtest.jdk, that is set by JTreg. + +JMX must be enabled in order to enable Jdp. This requires a free port (com.sun.management.jmxremote.port). +To avoid port-busy conflicts, DynamicLauncher.java will try to find a free port up to three times. + +There are some other tests used for test development, and not meant to be run automatically by JTreg. + 1) PortAlreadyInUse.java, used to test the retry mechanism to find a free port. + 2) PacketTest.java, Jdp packet sanity. + 3) JdpTestUtil.java, Utility functions to read a Jdp packet. + 4) JdpTestUtilTest.java, Unit tests for JdpTestUtil.java From f952749e415bd39a26fad71a19a69fe7eaf0b456 Mon Sep 17 00:00:00 2001 From: Xueming Shen Date: Mon, 11 Nov 2013 14:35:36 -0800 Subject: [PATCH 068/145] 8026330: java.util.Base64 urlEncoder should omit padding To add Encoder.withoutPadding() Reviewed-by: alanb --- jdk/src/share/classes/java/util/Base64.java | 104 ++++-- jdk/test/java/util/Base64/TestBase64.java | 331 ++++++++++---------- 2 files changed, 243 insertions(+), 192 deletions(-) diff --git a/jdk/src/share/classes/java/util/Base64.java b/jdk/src/share/classes/java/util/Base64.java index db281388791..ac5a5d6be92 100644 --- a/jdk/src/share/classes/java/util/Base64.java +++ b/jdk/src/share/classes/java/util/Base64.java @@ -138,7 +138,7 @@ public class Base64 { if (lineLength <= 0) { return Encoder.RFC4648; } - return new Encoder(false, lineSeparator, lineLength >> 2 << 2); + return new Encoder(false, lineSeparator, lineLength >> 2 << 2, true); } /** @@ -192,11 +192,13 @@ public class Base64 { private final byte[] newline; private final int linemax; private final boolean isURL; + private final boolean doPadding; - private Encoder(boolean isURL, byte[] newline, int linemax) { + private Encoder(boolean isURL, byte[] newline, int linemax, boolean doPadding) { this.isURL = isURL; this.newline = newline; this.linemax = linemax; + this.doPadding = doPadding; } /** @@ -228,9 +230,22 @@ public class Base64 { private static final int MIMELINEMAX = 76; private static final byte[] CRLF = new byte[] {'\r', '\n'}; - static final Encoder RFC4648 = new Encoder(false, null, -1); - static final Encoder RFC4648_URLSAFE = new Encoder(true, null, -1); - static final Encoder RFC2045 = new Encoder(false, CRLF, MIMELINEMAX); + static final Encoder RFC4648 = new Encoder(false, null, -1, true); + static final Encoder RFC4648_URLSAFE = new Encoder(true, null, -1, true); + static final Encoder RFC2045 = new Encoder(false, CRLF, MIMELINEMAX, true); + + private final int outLength(int srclen) { + int len = 0; + if (doPadding) { + len = 4 * ((srclen + 2) / 3); + } else { + int n = srclen % 3; + len = 4 * (srclen / 3) + (n == 0 ? 0 : n + 1); + } + if (linemax > 0) // line separators + len += (len - 1) / linemax * newline.length; + return len; + } /** * Encodes all bytes from the specified byte array into a newly-allocated @@ -243,9 +258,7 @@ public class Base64 { * encoded bytes. */ public byte[] encode(byte[] src) { - int len = 4 * ((src.length + 2) / 3); // dst array size - if (linemax > 0) // line separators - len += (len - 1) / linemax * newline.length; + int len = outLength(src.length); // dst array size byte[] dst = new byte[len]; int ret = encode0(src, 0, src.length, dst); if (ret != dst.length) @@ -273,10 +286,7 @@ public class Base64 { * space for encoding all input bytes. */ public int encode(byte[] src, byte[] dst) { - int len = 4 * ((src.length + 2) / 3); // dst array size - if (linemax > 0) { - len += (len - 1) / linemax * newline.length; - } + int len = outLength(src.length); // dst array size if (dst.length < len) throw new IllegalArgumentException( "Output byte array is too small for encoding all input bytes"); @@ -321,9 +331,7 @@ public class Base64 { * @return A newly-allocated byte buffer containing the encoded bytes. */ public ByteBuffer encode(ByteBuffer buffer) { - int len = 4 * ((buffer.remaining() + 2) / 3); - if (linemax > 0) - len += (len - 1) / linemax * newline.length; + int len = outLength(buffer.remaining()); byte[] dst = new byte[len]; int ret = 0; if (buffer.hasArray()) { @@ -415,7 +423,25 @@ public class Base64 { public OutputStream wrap(OutputStream os) { Objects.requireNonNull(os); return new EncOutputStream(os, isURL ? toBase64URL : toBase64, - newline, linemax); + newline, linemax, doPadding); + } + + /** + * Returns an encoder instance that encodes equivalently to this one, + * but without adding any padding character at the end of the encoded + * byte data. + * + *

      The encoding scheme of this encoder instance is unaffected by + * this invocation. The returned encoder instance should be used for + * non-padding encoding operation. + * + * @return an equivalent encoder that encodes without adding any + * padding character at the end + */ + public Encoder withoutPadding() { + if (!doPadding) + return this; + return new Encoder(isURL, newline, linemax, false); } private int encodeArray(ByteBuffer src, ByteBuffer dst, int bytesOut) { @@ -476,13 +502,17 @@ public class Base64 { da[dp++] = (byte)base64[b0 >> 2]; if (sp == sl) { da[dp++] = (byte)base64[(b0 << 4) & 0x3f]; - da[dp++] = '='; - da[dp++] = '='; + if (doPadding) { + da[dp++] = '='; + da[dp++] = '='; + } } else { int b1 = sa[sp++] & 0xff; da[dp++] = (byte)base64[(b0 << 4) & 0x3f | (b1 >> 4)]; da[dp++] = (byte)base64[(b1 << 2) & 0x3f]; - da[dp++] = '='; + if (doPadding) { + da[dp++] = '='; + } } } return dp - dp00 + bytesOut; @@ -548,13 +578,17 @@ public class Base64 { dst.put(dp++, (byte)base64[b0 >> 2]); if (sp == src.limit()) { dst.put(dp++, (byte)base64[(b0 << 4) & 0x3f]); - dst.put(dp++, (byte)'='); - dst.put(dp++, (byte)'='); + if (doPadding) { + dst.put(dp++, (byte)'='); + dst.put(dp++, (byte)'='); + } } else { int b1 = src.get(sp++) & 0xff; dst.put(dp++, (byte)base64[(b0 << 4) & 0x3f | (b1 >> 4)]); dst.put(dp++, (byte)base64[(b1 << 2) & 0x3f]); - dst.put(dp++, (byte)'='); + if (doPadding) { + dst.put(dp++, (byte)'='); + } } } return dp - dp00 + bytesOut; @@ -597,13 +631,17 @@ public class Base64 { dst[dp++] = (byte)base64[b0 >> 2]; if (sp == end) { dst[dp++] = (byte)base64[(b0 << 4) & 0x3f]; - dst[dp++] = '='; - dst[dp++] = '='; + if (doPadding) { + dst[dp++] = '='; + dst[dp++] = '='; + } } else { int b1 = src[sp++] & 0xff; dst[dp++] = (byte)base64[(b0 << 4) & 0x3f | (b1 >> 4)]; dst[dp++] = (byte)base64[(b1 << 2) & 0x3f]; - dst[dp++] = '='; + if (doPadding) { + dst[dp++] = '='; + } } } return dp; @@ -1149,14 +1187,16 @@ public class Base64 { private final char[] base64; // byte->base64 mapping private final byte[] newline; // line separator, if needed private final int linemax; + private final boolean doPadding;// whether or not to pad private int linepos = 0; - EncOutputStream(OutputStream os, - char[] base64, byte[] newline, int linemax) { + EncOutputStream(OutputStream os, char[] base64, + byte[] newline, int linemax, boolean doPadding) { super(os); this.base64 = base64; this.newline = newline; this.linemax = linemax; + this.doPadding = doPadding; } @Override @@ -1228,14 +1268,18 @@ public class Base64 { checkNewline(); out.write(base64[b0 >> 2]); out.write(base64[(b0 << 4) & 0x3f]); - out.write('='); - out.write('='); + if (doPadding) { + out.write('='); + out.write('='); + } } else if (leftover == 2) { checkNewline(); out.write(base64[b0 >> 2]); out.write(base64[(b0 << 4) & 0x3f | (b1 >> 4)]); out.write(base64[(b1 << 2) & 0x3f]); - out.write('='); + if (doPadding) { + out.write('='); + } } leftover = 0; out.close(); diff --git a/jdk/test/java/util/Base64/TestBase64.java b/jdk/test/java/util/Base64/TestBase64.java index 620235612d8..9f7babeeeac 100644 --- a/jdk/test/java/util/Base64/TestBase64.java +++ b/jdk/test/java/util/Base64/TestBase64.java @@ -23,7 +23,7 @@ /** * @test 4235519 8004212 8005394 8007298 8006295 8006315 8006530 8007379 8008925 - * 8014217 8025003 + * 8014217 8025003 8026330 * @summary tests java.util.Base64 */ @@ -47,12 +47,9 @@ public class TestBase64 { numBytes = Integer.parseInt(args[1]); } - test(Base64.getEncoder(), Base64.getDecoder(), - numRuns, numBytes); - test(Base64.getUrlEncoder(), Base64.getUrlDecoder(), - numRuns, numBytes); - test(Base64.getMimeEncoder(), Base64.getMimeDecoder(), - numRuns, numBytes); + test(Base64.getEncoder(), Base64.getDecoder(), numRuns, numBytes); + test(Base64.getUrlEncoder(), Base64.getUrlDecoder(), numRuns, numBytes); + test(Base64.getMimeEncoder(), Base64.getMimeDecoder(), numRuns, numBytes); Random rnd = new java.util.Random(); byte[] nl_1 = new byte[] {'\n'}; @@ -142,165 +139,175 @@ public class TestBase64 { enc.encode(new byte[0]); dec.decode(new byte[0]); - for (int i=0; i Date: Sat, 9 Nov 2013 04:21:28 +0400 Subject: [PATCH 070/145] 8027823: catchException combinator fails with 9 argument target Reviewed-by: jrose --- .../java/lang/invoke/MethodHandleImpl.java | 5 +- .../MethodHandles/TestCatchException.java | 81 +++++++++++++++++++ 2 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 jdk/test/java/lang/invoke/MethodHandles/TestCatchException.java diff --git a/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java b/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java index 0d6ed2da06a..eca236ce308 100644 --- a/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java +++ b/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java @@ -744,8 +744,11 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; MethodHandle ginvoker = GuardWithCatch.INVOKES[nargs].bindReceiver(gguard); return makePairwiseConvert(ginvoker, type, 2); } else { + target = target.asType(type.changeReturnType(Object.class)); MethodHandle gtarget = makeSpreadArguments(target, Object[].class, 0, nargs); - catcher = catcher.asType(ctype.changeParameterType(0, Throwable.class)); + MethodType catcherType = ctype.changeParameterType(0, Throwable.class) + .changeReturnType(Object.class); + catcher = catcher.asType(catcherType); MethodHandle gcatcher = makeSpreadArguments(catcher, Object[].class, 1, nargs); GuardWithCatch gguard = new GuardWithCatch(gtarget, exType, gcatcher); if (gtarget == null || gcatcher == null) throw new InternalError(); diff --git a/jdk/test/java/lang/invoke/MethodHandles/TestCatchException.java b/jdk/test/java/lang/invoke/MethodHandles/TestCatchException.java new file mode 100644 index 00000000000..106eafc1426 --- /dev/null +++ b/jdk/test/java/lang/invoke/MethodHandles/TestCatchException.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8027823 + * @run junit test.java.lang.invoke.TestCatchException + */ +package test.java.lang.invoke; + +import java.lang.invoke.*; +import org.junit.*; +import static org.junit.Assert.*; + +public class TestCatchException { + final static MethodHandles.Lookup LOOKUP = MethodHandles.lookup(); + final static MethodType M_TYPE = MethodType.methodType(int.class, Object.class, Object.class, int.class, int.class, int.class, int.class, int.class, int.class, int.class); + + private static int noThrow(Object o1, Object o2, int i1, int i2, int i3, int i4, int i5, int i6, int i7) { + return 42; + } + + private static int throwEx(Object o1, Object o2, int i1, int i2, int i3, int i4, int i5, int i6, int i7) throws Exception { + throw new Exception(); + } + + private static int handler(Exception e) { + return 17; + } + + @Test + public void testNoThrowPath() throws Throwable { + MethodHandle target = LOOKUP.findStatic(TestCatchException.class, "noThrow", M_TYPE); + MethodHandle handler = LOOKUP.findStatic(TestCatchException.class, "handler", MethodType.methodType(int.class, Exception.class)); + + MethodHandle h = MethodHandles.catchException(target, Exception.class, handler); + + int x = (int)h.invokeExact(new Object(), new Object(), 1, 2, 3, 4, 5, 6, 7); + assertEquals(x, 42); + } + + @Test + public void testThrowPath() throws Throwable { + MethodHandle target = LOOKUP.findStatic(TestCatchException.class, "throwEx", M_TYPE); + MethodHandle handler = LOOKUP.findStatic(TestCatchException.class, "handler", MethodType.methodType(int.class, Exception.class)); + + MethodHandle h = MethodHandles.catchException(target, Exception.class, handler); + + int x = (int)h.invokeExact(new Object(), new Object(), 1, 2, 3, 4, 5, 6, 7); + assertEquals(x, 17); + } + + public static void main(String[] args) throws Throwable { + TestCatchException test = new TestCatchException(); + test.testNoThrowPath(); + test.testThrowPath(); + System.out.println("TEST PASSED"); + } +} From 0e9bb40372242d7607dc53ec29be5605260a65ca Mon Sep 17 00:00:00 2001 From: Attila Szegedi Date: Mon, 11 Nov 2013 14:25:01 +0100 Subject: [PATCH 071/145] 8028020: Function parameter as last expression in comma in return value causes bad type calculation Reviewed-by: jlaskey, lagergren, sundar --- .../jdk/nashorn/internal/codegen/Attr.java | 9 ++++- .../internal/codegen/CodeGenerator.java | 2 + nashorn/test/script/basic/JDK-8028020.js | 40 +++++++++++++++++++ .../test/script/basic/JDK-8028020.js.EXPECTED | 2 + 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 nashorn/test/script/basic/JDK-8028020.js create mode 100644 nashorn/test/script/basic/JDK-8028020.js.EXPECTED diff --git a/nashorn/src/jdk/nashorn/internal/codegen/Attr.java b/nashorn/src/jdk/nashorn/internal/codegen/Attr.java index d4e378cfd8b..f1ced8ada06 100644 --- a/nashorn/src/jdk/nashorn/internal/codegen/Attr.java +++ b/nashorn/src/jdk/nashorn/internal/codegen/Attr.java @@ -1265,12 +1265,17 @@ final class Attr extends NodeOperatorVisitor { @Override public Node leaveCOMMARIGHT(final BinaryNode binaryNode) { - return end(ensureSymbol(binaryNode.rhs().getType(), binaryNode)); + return leaveComma(binaryNode, binaryNode.rhs()); } @Override public Node leaveCOMMALEFT(final BinaryNode binaryNode) { - return end(ensureSymbol(binaryNode.lhs().getType(), binaryNode)); + return leaveComma(binaryNode, binaryNode.lhs()); + } + + private Node leaveComma(final BinaryNode commaNode, final Expression effectiveExpr) { + ensureTypeNotUnknown(effectiveExpr); + return end(ensureSymbol(effectiveExpr.getType(), commaNode)); } @Override diff --git a/nashorn/src/jdk/nashorn/internal/codegen/CodeGenerator.java b/nashorn/src/jdk/nashorn/internal/codegen/CodeGenerator.java index 206433db268..f5c1fb874a8 100644 --- a/nashorn/src/jdk/nashorn/internal/codegen/CodeGenerator.java +++ b/nashorn/src/jdk/nashorn/internal/codegen/CodeGenerator.java @@ -412,6 +412,8 @@ final class CodeGenerator extends NodeOperatorVisitor Date: Mon, 11 Nov 2013 11:53:33 -0800 Subject: [PATCH 072/145] 8024830: SEGV in org.apache.lucene.codecs.compressing.CompressingTermVectorsReader.get Exclude last input argument's stack slots from vector's spilling masks. Reviewed-by: iveresov --- hotspot/src/share/vm/opto/matcher.cpp | 32 ++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/hotspot/src/share/vm/opto/matcher.cpp b/hotspot/src/share/vm/opto/matcher.cpp index 85474115f30..25a71002073 100644 --- a/hotspot/src/share/vm/opto/matcher.cpp +++ b/hotspot/src/share/vm/opto/matcher.cpp @@ -464,17 +464,17 @@ void Matcher::init_first_stack_mask() { C->FIRST_STACK_mask().Clear(); // Add in the incoming argument area - OptoReg::Name init = OptoReg::add(_old_SP, C->out_preserve_stack_slots()); - for (i = init; i < _in_arg_limit; i = OptoReg::add(i,1)) + OptoReg::Name init_in = OptoReg::add(_old_SP, C->out_preserve_stack_slots()); + for (i = init_in; i < _in_arg_limit; i = OptoReg::add(i,1)) { C->FIRST_STACK_mask().Insert(i); - + } // Add in all bits past the outgoing argument area guarantee(RegMask::can_represent_arg(OptoReg::add(_out_arg_limit,-1)), "must be able to represent all call arguments in reg mask"); - init = _out_arg_limit; - for (i = init; RegMask::can_represent(i); i = OptoReg::add(i,1)) + OptoReg::Name init = _out_arg_limit; + for (i = init; RegMask::can_represent(i); i = OptoReg::add(i,1)) { C->FIRST_STACK_mask().Insert(i); - + } // Finally, set the "infinite stack" bit. C->FIRST_STACK_mask().set_AllStack(); @@ -506,16 +506,36 @@ void Matcher::init_first_stack_mask() { idealreg2spillmask[Op_VecS]->OR(C->FIRST_STACK_mask()); } if (Matcher::vector_size_supported(T_FLOAT,2)) { + // For VecD we need dual alignment and 8 bytes (2 slots) for spills. + // RA guarantees such alignment since it is needed for Double and Long values. *idealreg2spillmask[Op_VecD] = *idealreg2regmask[Op_VecD]; idealreg2spillmask[Op_VecD]->OR(aligned_stack_mask); } if (Matcher::vector_size_supported(T_FLOAT,4)) { + // For VecX we need quadro alignment and 16 bytes (4 slots) for spills. + // + // RA can use input arguments stack slots for spills but until RA + // we don't know frame size and offset of input arg stack slots. + // + // Exclude last input arg stack slots to avoid spilling vectors there + // otherwise vector spills could stomp over stack slots in caller frame. + OptoReg::Name in = OptoReg::add(_in_arg_limit, -1); + for (int k = 1; (in >= init_in) && (k < RegMask::SlotsPerVecX); k++) { + aligned_stack_mask.Remove(in); + in = OptoReg::add(in, -1); + } aligned_stack_mask.clear_to_sets(RegMask::SlotsPerVecX); assert(aligned_stack_mask.is_AllStack(), "should be infinite stack"); *idealreg2spillmask[Op_VecX] = *idealreg2regmask[Op_VecX]; idealreg2spillmask[Op_VecX]->OR(aligned_stack_mask); } if (Matcher::vector_size_supported(T_FLOAT,8)) { + // For VecY we need octo alignment and 32 bytes (8 slots) for spills. + OptoReg::Name in = OptoReg::add(_in_arg_limit, -1); + for (int k = 1; (in >= init_in) && (k < RegMask::SlotsPerVecY); k++) { + aligned_stack_mask.Remove(in); + in = OptoReg::add(in, -1); + } aligned_stack_mask.clear_to_sets(RegMask::SlotsPerVecY); assert(aligned_stack_mask.is_AllStack(), "should be infinite stack"); *idealreg2spillmask[Op_VecY] = *idealreg2regmask[Op_VecY]; From 18ca4cc301fe1e006d0330abe81d49ec3c5f9a6b Mon Sep 17 00:00:00 2001 From: Albert Noll Date: Tue, 12 Nov 2013 09:32:50 +0100 Subject: [PATCH 073/145] 8027593: performance drop with constrained codecache starting with hs25 b111 Fixed proper sweeping of small code cache sizes Reviewed-by: kvn, iveresov --- hotspot/src/share/vm/code/nmethod.cpp | 10 +- .../src/share/vm/compiler/compileBroker.cpp | 30 +-- .../src/share/vm/compiler/compileBroker.hpp | 8 +- hotspot/src/share/vm/runtime/arguments.cpp | 8 +- hotspot/src/share/vm/runtime/globals.hpp | 2 +- hotspot/src/share/vm/runtime/sweeper.cpp | 205 ++++++++++++------ hotspot/src/share/vm/runtime/sweeper.hpp | 42 ++-- 7 files changed, 184 insertions(+), 121 deletions(-) diff --git a/hotspot/src/share/vm/code/nmethod.cpp b/hotspot/src/share/vm/code/nmethod.cpp index eca6314fe2d..68718499a00 100644 --- a/hotspot/src/share/vm/code/nmethod.cpp +++ b/hotspot/src/share/vm/code/nmethod.cpp @@ -1259,7 +1259,7 @@ void nmethod::make_unloaded(BoolObjectClosure* is_alive, oop cause) { set_osr_link(NULL); //set_scavenge_root_link(NULL); // done by prune_scavenge_root_nmethods - NMethodSweeper::notify(); + NMethodSweeper::report_state_change(this); } void nmethod::invalidate_osr_method() { @@ -1293,7 +1293,9 @@ void nmethod::log_state_change() const { } } -// Common functionality for both make_not_entrant and make_zombie +/** + * Common functionality for both make_not_entrant and make_zombie + */ bool nmethod::make_not_entrant_or_zombie(unsigned int state) { assert(state == zombie || state == not_entrant, "must be zombie or not_entrant"); assert(!is_zombie(), "should not already be a zombie"); @@ -1417,9 +1419,7 @@ bool nmethod::make_not_entrant_or_zombie(unsigned int state) { tty->print_cr("nmethod <" INTPTR_FORMAT "> code made %s", this, (state == not_entrant) ? "not entrant" : "zombie"); } - // Make sweeper aware that there is a zombie method that needs to be removed - NMethodSweeper::notify(); - + NMethodSweeper::report_state_change(this); return true; } diff --git a/hotspot/src/share/vm/compiler/compileBroker.cpp b/hotspot/src/share/vm/compiler/compileBroker.cpp index fb47df28267..f8fa26ff8c2 100644 --- a/hotspot/src/share/vm/compiler/compileBroker.cpp +++ b/hotspot/src/share/vm/compiler/compileBroker.cpp @@ -126,6 +126,7 @@ HS_DTRACE_PROBE_DECL9(hotspot, method__compile__end, bool CompileBroker::_initialized = false; volatile bool CompileBroker::_should_block = false; +volatile jint CompileBroker::_print_compilation_warning = 0; volatile jint CompileBroker::_should_compile_new_jobs = run_compilation; // The installed compiler(s) @@ -2027,11 +2028,10 @@ void CompileBroker::invoke_compiler_on_method(CompileTask* task) { #endif } -// ------------------------------------------------------------------ -// CompileBroker::handle_full_code_cache -// -// The CodeCache is full. Print out warning and disable compilation or -// try code cache cleaning so compilation can continue later. +/** + * The CodeCache is full. Print out warning and disable compilation + * or try code cache cleaning so compilation can continue later. + */ void CompileBroker::handle_full_code_cache() { UseInterpreter = true; if (UseCompiler || AlwaysCompileLoopMethods ) { @@ -2048,12 +2048,9 @@ void CompileBroker::handle_full_code_cache() { xtty->stamp(); xtty->end_elem(); } - warning("CodeCache is full. Compiler has been disabled."); - warning("Try increasing the code cache size using -XX:ReservedCodeCacheSize="); CodeCache::report_codemem_full(); - #ifndef PRODUCT if (CompileTheWorld || ExitOnFullCodeCache) { codecache_print(/* detailed= */ true); @@ -2066,17 +2063,22 @@ void CompileBroker::handle_full_code_cache() { // Since code cache is full, immediately stop new compiles if (CompileBroker::set_should_compile_new_jobs(CompileBroker::stop_compilation)) { NMethodSweeper::log_sweep("disable_compiler"); - - // Switch to 'vm_state'. This ensures that possibly_sweep() can be called - // without having to consider the state in which the current thread is. - ThreadInVMfromUnknown in_vm; - NMethodSweeper::possibly_sweep(); } + // Switch to 'vm_state'. This ensures that possibly_sweep() can be called + // without having to consider the state in which the current thread is. + ThreadInVMfromUnknown in_vm; + NMethodSweeper::possibly_sweep(); } else { disable_compilation_forever(); } + + // Print warning only once + if (should_print_compiler_warning()) { + warning("CodeCache is full. Compiler has been disabled."); + warning("Try increasing the code cache size using -XX:ReservedCodeCacheSize="); + codecache_print(/* detailed= */ true); + } } - codecache_print(/* detailed= */ true); } // ------------------------------------------------------------------ diff --git a/hotspot/src/share/vm/compiler/compileBroker.hpp b/hotspot/src/share/vm/compiler/compileBroker.hpp index 19beeec9fb4..a74afb3065f 100644 --- a/hotspot/src/share/vm/compiler/compileBroker.hpp +++ b/hotspot/src/share/vm/compiler/compileBroker.hpp @@ -315,6 +315,8 @@ class CompileBroker: AllStatic { static int _sum_nmethod_code_size; static long _peak_compilation_time; + static volatile jint _print_compilation_warning; + static CompilerThread* make_compiler_thread(const char* name, CompileQueue* queue, CompilerCounters* counters, AbstractCompiler* comp, TRAPS); static void init_compiler_threads(int c1_compiler_count, int c2_compiler_count); static bool compilation_is_complete (methodHandle method, int osr_bci, int comp_level); @@ -418,7 +420,11 @@ class CompileBroker: AllStatic { return _should_compile_new_jobs == shutdown_compilaton; } static void handle_full_code_cache(); - + // Ensures that warning is only printed once. + static bool should_print_compiler_warning() { + jint old = Atomic::cmpxchg(1, &_print_compilation_warning, 0); + return old == 0; + } // Return total compilation ticks static jlong total_compilation_ticks() { return _perf_total_compilation != NULL ? _perf_total_compilation->get_value() : 0; diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp index 8060dae0377..6de1997b940 100644 --- a/hotspot/src/share/vm/runtime/arguments.cpp +++ b/hotspot/src/share/vm/runtime/arguments.cpp @@ -1132,9 +1132,6 @@ void Arguments::set_tiered_flags() { Tier3InvokeNotifyFreqLog = 0; Tier4InvocationThreshold = 0; } - if (FLAG_IS_DEFAULT(NmethodSweepFraction)) { - FLAG_SET_DEFAULT(NmethodSweepFraction, 1 + ReservedCodeCacheSize / (16 * M)); - } } #if INCLUDE_ALL_GCS @@ -3643,6 +3640,11 @@ jint Arguments::apply_ergo() { "Incompatible compilation policy selected", NULL); } } + // Set NmethodSweepFraction after the size of the code cache is adapted (in case of tiered) + if (FLAG_IS_DEFAULT(NmethodSweepFraction)) { + FLAG_SET_DEFAULT(NmethodSweepFraction, 1 + ReservedCodeCacheSize / (16 * M)); + } + // Set heap size based on available physical memory set_heap_size(); diff --git a/hotspot/src/share/vm/runtime/globals.hpp b/hotspot/src/share/vm/runtime/globals.hpp index c3d98153ca9..24570a18d6f 100644 --- a/hotspot/src/share/vm/runtime/globals.hpp +++ b/hotspot/src/share/vm/runtime/globals.hpp @@ -3286,7 +3286,7 @@ class CommandLineFlags { "Exit the VM if we fill the code cache") \ \ product(bool, UseCodeCacheFlushing, true, \ - "Attempt to clean the code cache before shutting off compiler") \ + "Remove cold/old nmethods from the code cache") \ \ /* interpreter debugging */ \ develop(intx, BinarySwitchThreshold, 5, \ diff --git a/hotspot/src/share/vm/runtime/sweeper.cpp b/hotspot/src/share/vm/runtime/sweeper.cpp index eab7636fac1..19db74963ce 100644 --- a/hotspot/src/share/vm/runtime/sweeper.cpp +++ b/hotspot/src/share/vm/runtime/sweeper.cpp @@ -112,14 +112,13 @@ void NMethodSweeper::record_sweep(nmethod* nm, int line) { if (_records != NULL) { _records[_sweep_index].traversal = _traversals; _records[_sweep_index].traversal_mark = nm->_stack_traversal_mark; - _records[_sweep_index].invocation = _invocations; + _records[_sweep_index].invocation = _sweep_fractions_left; _records[_sweep_index].compile_id = nm->compile_id(); _records[_sweep_index].kind = nm->compile_kind(); _records[_sweep_index].state = nm->_state; _records[_sweep_index].vep = nm->verified_entry_point(); _records[_sweep_index].uep = nm->entry_point(); _records[_sweep_index].line = line; - _sweep_index = (_sweep_index + 1) % SweeperLogEntries; } } @@ -127,26 +126,29 @@ void NMethodSweeper::record_sweep(nmethod* nm, int line) { #define SWEEP(nm) #endif -nmethod* NMethodSweeper::_current = NULL; // Current nmethod -long NMethodSweeper::_traversals = 0; // Nof. stack traversals performed -int NMethodSweeper::_seen = 0; // Nof. nmethods we have currently processed in current pass of CodeCache -int NMethodSweeper::_flushed_count = 0; // Nof. nmethods flushed in current sweep -int NMethodSweeper::_zombified_count = 0; // Nof. nmethods made zombie in current sweep -int NMethodSweeper::_marked_count = 0; // Nof. nmethods marked for reclaim in current sweep +nmethod* NMethodSweeper::_current = NULL; // Current nmethod +long NMethodSweeper::_traversals = 0; // Stack scan count, also sweep ID. +long NMethodSweeper::_time_counter = 0; // Virtual time used to periodically invoke sweeper +long NMethodSweeper::_last_sweep = 0; // Value of _time_counter when the last sweep happened +int NMethodSweeper::_seen = 0; // Nof. nmethod we have currently processed in current pass of CodeCache +int NMethodSweeper::_flushed_count = 0; // Nof. nmethods flushed in current sweep +int NMethodSweeper::_zombified_count = 0; // Nof. nmethods made zombie in current sweep +int NMethodSweeper::_marked_for_reclamation_count = 0; // Nof. nmethods marked for reclaim in current sweep -volatile int NMethodSweeper::_invocations = 0; // Nof. invocations left until we are completed with this pass -volatile int NMethodSweeper::_sweep_started = 0; // Whether a sweep is in progress. +volatile bool NMethodSweeper::_should_sweep = true; // Indicates if we should invoke the sweeper +volatile int NMethodSweeper::_sweep_fractions_left = 0; // Nof. invocations left until we are completed with this pass +volatile int NMethodSweeper::_sweep_started = 0; // Flag to control conc sweeper +volatile int NMethodSweeper::_bytes_changed = 0; // Counts the total nmethod size if the nmethod changed from: + // 1) alive -> not_entrant + // 2) not_entrant -> zombie + // 3) zombie -> marked_for_reclamation -jint NMethodSweeper::_locked_seen = 0; -jint NMethodSweeper::_not_entrant_seen_on_stack = 0; -bool NMethodSweeper::_request_mark_phase = false; - -int NMethodSweeper::_total_nof_methods_reclaimed = 0; -jlong NMethodSweeper::_total_time_sweeping = 0; -jlong NMethodSweeper::_total_time_this_sweep = 0; -jlong NMethodSweeper::_peak_sweep_time = 0; -jlong NMethodSweeper::_peak_sweep_fraction_time = 0; -int NMethodSweeper::_hotness_counter_reset_val = 0; +int NMethodSweeper::_total_nof_methods_reclaimed = 0; // Accumulated nof methods flushed +jlong NMethodSweeper::_total_time_sweeping = 0; // Accumulated time sweeping +jlong NMethodSweeper::_total_time_this_sweep = 0; // Total time this sweep +jlong NMethodSweeper::_peak_sweep_time = 0; // Peak time for a full sweep +jlong NMethodSweeper::_peak_sweep_fraction_time = 0; // Peak time sweeping one fraction +int NMethodSweeper::_hotness_counter_reset_val = 0; class MarkActivationClosure: public CodeBlobClosure { @@ -197,13 +199,16 @@ void NMethodSweeper::mark_active_nmethods() { return; } + // Increase time so that we can estimate when to invoke the sweeper again. + _time_counter++; + // Check for restart assert(CodeCache::find_blob_unsafe(_current) == _current, "Sweeper nmethod cached state invalid"); - if (!sweep_in_progress() && need_marking_phase()) { - _seen = 0; - _invocations = NmethodSweepFraction; - _current = CodeCache::first_nmethod(); - _traversals += 1; + if (!sweep_in_progress()) { + _seen = 0; + _sweep_fractions_left = NmethodSweepFraction; + _current = CodeCache::first_nmethod(); + _traversals += 1; _total_time_this_sweep = 0; if (PrintMethodFlushing) { @@ -211,10 +216,6 @@ void NMethodSweeper::mark_active_nmethods() { } Threads::nmethods_do(&mark_activation_closure); - // reset the flags since we started a scan from the beginning. - reset_nmethod_marking(); - _locked_seen = 0; - _not_entrant_seen_on_stack = 0; } else { // Only set hotness counter Threads::nmethods_do(&set_hotness_closure); @@ -222,14 +223,48 @@ void NMethodSweeper::mark_active_nmethods() { OrderAccess::storestore(); } - +/** + * This function invokes the sweeper if at least one of the three conditions is met: + * (1) The code cache is getting full + * (2) There are sufficient state changes in/since the last sweep. + * (3) We have not been sweeping for 'some time' + */ void NMethodSweeper::possibly_sweep() { assert(JavaThread::current()->thread_state() == _thread_in_vm, "must run in vm mode"); if (!MethodFlushing || !sweep_in_progress()) { return; } - if (_invocations > 0) { + // If there was no state change while nmethod sweeping, 'should_sweep' will be false. + // This is one of the two places where should_sweep can be set to true. The general + // idea is as follows: If there is enough free space in the code cache, there is no + // need to invoke the sweeper. The following formula (which determines whether to invoke + // the sweeper or not) depends on the assumption that for larger ReservedCodeCacheSizes + // we need less frequent sweeps than for smaller ReservedCodecCacheSizes. Furthermore, + // the formula considers how much space in the code cache is currently used. Here are + // some examples that will (hopefully) help in understanding. + // + // Small ReservedCodeCacheSizes: (e.g., < 16M) We invoke the sweeper every time, since + // the result of the division is 0. This + // keeps the used code cache size small + // (important for embedded Java) + // Large ReservedCodeCacheSize : (e.g., 256M + code cache is 10% full). The formula + // computes: (256 / 16) - 1 = 15 + // As a result, we invoke the sweeper after + // 15 invocations of 'mark_active_nmethods. + // Large ReservedCodeCacheSize: (e.g., 256M + code Cache is 90% full). The formula + // computes: (256 / 16) - 10 = 6. + if (!_should_sweep) { + int time_since_last_sweep = _time_counter - _last_sweep; + double wait_until_next_sweep = (ReservedCodeCacheSize / (16 * M)) - time_since_last_sweep - + CodeCache::reverse_free_ratio(); + + if ((wait_until_next_sweep <= 0.0) || !CompileBroker::should_compile_new_jobs()) { + _should_sweep = true; + } + } + + if (_should_sweep && _sweep_fractions_left > 0) { // Only one thread at a time will sweep jint old = Atomic::cmpxchg( 1, &_sweep_started, 0 ); if (old != 0) { @@ -242,31 +277,46 @@ void NMethodSweeper::possibly_sweep() { memset(_records, 0, sizeof(SweeperRecord) * SweeperLogEntries); } #endif - if (_invocations > 0) { + + if (_sweep_fractions_left > 0) { sweep_code_cache(); - _invocations--; + _sweep_fractions_left--; + } + + // We are done with sweeping the code cache once. + if (_sweep_fractions_left == 0) { + _last_sweep = _time_counter; + // Reset flag; temporarily disables sweeper + _should_sweep = false; + // If there was enough state change, 'possibly_enable_sweeper()' + // sets '_should_sweep' to true + possibly_enable_sweeper(); + // Reset _bytes_changed only if there was enough state change. _bytes_changed + // can further increase by calls to 'report_state_change'. + if (_should_sweep) { + _bytes_changed = 0; + } } _sweep_started = 0; } } void NMethodSweeper::sweep_code_cache() { - jlong sweep_start_counter = os::elapsed_counter(); - _flushed_count = 0; - _zombified_count = 0; - _marked_count = 0; + _flushed_count = 0; + _zombified_count = 0; + _marked_for_reclamation_count = 0; if (PrintMethodFlushing && Verbose) { - tty->print_cr("### Sweep at %d out of %d. Invocations left: %d", _seen, CodeCache::nof_nmethods(), _invocations); + tty->print_cr("### Sweep at %d out of %d. Invocations left: %d", _seen, CodeCache::nof_nmethods(), _sweep_fractions_left); } if (!CompileBroker::should_compile_new_jobs()) { // If we have turned off compilations we might as well do full sweeps // in order to reach the clean state faster. Otherwise the sleeping compiler // threads will slow down sweeping. - _invocations = 1; + _sweep_fractions_left = 1; } // We want to visit all nmethods after NmethodSweepFraction @@ -274,7 +324,7 @@ void NMethodSweeper::sweep_code_cache() { // remaining number of invocations. This is only an estimate since // the number of nmethods changes during the sweep so the final // stage must iterate until it there are no more nmethods. - int todo = (CodeCache::nof_nmethods() - _seen) / _invocations; + int todo = (CodeCache::nof_nmethods() - _seen) / _sweep_fractions_left; int swept_count = 0; @@ -286,11 +336,11 @@ void NMethodSweeper::sweep_code_cache() { MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); // The last invocation iterates until there are no more nmethods - for (int i = 0; (i < todo || _invocations == 1) && _current != NULL; i++) { + for (int i = 0; (i < todo || _sweep_fractions_left == 1) && _current != NULL; i++) { swept_count++; if (SafepointSynchronize::is_synchronizing()) { // Safepoint request if (PrintMethodFlushing && Verbose) { - tty->print_cr("### Sweep at %d out of %d, invocation: %d, yielding to safepoint", _seen, CodeCache::nof_nmethods(), _invocations); + tty->print_cr("### Sweep at %d out of %d, invocation: %d, yielding to safepoint", _seen, CodeCache::nof_nmethods(), _sweep_fractions_left); } MutexUnlockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); @@ -314,19 +364,7 @@ void NMethodSweeper::sweep_code_cache() { } } - assert(_invocations > 1 || _current == NULL, "must have scanned the whole cache"); - - if (!sweep_in_progress() && !need_marking_phase() && (_locked_seen || _not_entrant_seen_on_stack)) { - // we've completed a scan without making progress but there were - // nmethods we were unable to process either because they were - // locked or were still on stack. We don't have to aggressively - // clean them up so just stop scanning. We could scan once more - // but that complicates the control logic and it's unlikely to - // matter much. - if (PrintMethodFlushing) { - tty->print_cr("### Couldn't make progress on some nmethods so stopping sweep"); - } - } + assert(_sweep_fractions_left > 1 || _current == NULL, "must have scanned the whole cache"); jlong sweep_end_counter = os::elapsed_counter(); jlong sweep_time = sweep_end_counter - sweep_start_counter; @@ -340,21 +378,21 @@ void NMethodSweeper::sweep_code_cache() { event.set_starttime(sweep_start_counter); event.set_endtime(sweep_end_counter); event.set_sweepIndex(_traversals); - event.set_sweepFractionIndex(NmethodSweepFraction - _invocations + 1); + event.set_sweepFractionIndex(NmethodSweepFraction - _sweep_fractions_left + 1); event.set_sweptCount(swept_count); event.set_flushedCount(_flushed_count); - event.set_markedCount(_marked_count); + event.set_markedCount(_marked_for_reclamation_count); event.set_zombifiedCount(_zombified_count); event.commit(); } #ifdef ASSERT if(PrintMethodFlushing) { - tty->print_cr("### sweeper: sweep time(%d): " INT64_FORMAT, _invocations, (jlong)sweep_time); + tty->print_cr("### sweeper: sweep time(%d): " INT64_FORMAT, _sweep_fractions_left, (jlong)sweep_time); } #endif - if (_invocations == 1) { + if (_sweep_fractions_left == 1) { _peak_sweep_time = MAX2(_peak_sweep_time, _total_time_this_sweep); log_sweep("finished"); } @@ -368,12 +406,37 @@ void NMethodSweeper::sweep_code_cache() { // it only makes sense to re-enable compilation if we have actually freed memory. // Note that typically several kB are released for sweeping 16MB of the code // cache. As a result, 'freed_memory' > 0 to restart the compiler. - if (UseCodeCacheFlushing && (!CompileBroker::should_compile_new_jobs() && (freed_memory > 0))) { + if (!CompileBroker::should_compile_new_jobs() && (freed_memory > 0)) { CompileBroker::set_should_compile_new_jobs(CompileBroker::run_compilation); log_sweep("restart_compiler"); } } +/** + * This function updates the sweeper statistics that keep track of nmethods + * state changes. If there is 'enough' state change, the sweeper is invoked + * as soon as possible. There can be data races on _bytes_changed. The data + * races are benign, since it does not matter if we loose a couple of bytes. + * In the worst case we call the sweeper a little later. Also, we are guaranteed + * to invoke the sweeper if the code cache gets full. + */ +void NMethodSweeper::report_state_change(nmethod* nm) { + _bytes_changed += nm->total_size(); + possibly_enable_sweeper(); +} + +/** + * Function determines if there was 'enough' state change in the code cache to invoke + * the sweeper again. Currently, we determine 'enough' as more than 1% state change in + * the code cache since the last sweep. + */ +void NMethodSweeper::possibly_enable_sweeper() { + double percent_changed = ((double)_bytes_changed / (double)ReservedCodeCacheSize) * 100; + if (percent_changed > 1.0) { + _should_sweep = true; + } +} + class NMethodMarker: public StackObj { private: CompilerThread* _thread; @@ -424,9 +487,6 @@ int NMethodSweeper::process_nmethod(nmethod *nm) { MutexLocker cl(CompiledIC_lock); nm->cleanup_inline_caches(); SWEEP(nm); - } else { - _locked_seen++; - SWEEP(nm); } return freed_memory; } @@ -448,8 +508,9 @@ int NMethodSweeper::process_nmethod(nmethod *nm) { tty->print_cr("### Nmethod %3d/" PTR_FORMAT " (zombie) being marked for reclamation", nm->compile_id(), nm); } nm->mark_for_reclamation(); - request_nmethod_marking(); - _marked_count++; + // Keep track of code cache state change + _bytes_changed += nm->total_size(); + _marked_for_reclamation_count++; SWEEP(nm); } } else if (nm->is_not_entrant()) { @@ -459,18 +520,14 @@ int NMethodSweeper::process_nmethod(nmethod *nm) { if (PrintMethodFlushing && Verbose) { tty->print_cr("### Nmethod %3d/" PTR_FORMAT " (not entrant) being made zombie", nm->compile_id(), nm); } + // Code cache state change is tracked in make_zombie() nm->make_zombie(); - request_nmethod_marking(); _zombified_count++; SWEEP(nm); } else { // Still alive, clean up its inline caches MutexLocker cl(CompiledIC_lock); nm->cleanup_inline_caches(); - // we coudn't transition this nmethod so don't immediately - // request a rescan. If this method stays on the stack for a - // long time we don't want to keep rescanning the code cache. - _not_entrant_seen_on_stack++; SWEEP(nm); } } else if (nm->is_unloaded()) { @@ -485,8 +542,8 @@ int NMethodSweeper::process_nmethod(nmethod *nm) { release_nmethod(nm); _flushed_count++; } else { + // Code cache state change is tracked in make_zombie() nm->make_zombie(); - request_nmethod_marking(); _zombified_count++; SWEEP(nm); } @@ -514,7 +571,11 @@ int NMethodSweeper::process_nmethod(nmethod *nm) { // The second condition ensures that methods are not immediately made not-entrant // after compilation. nm->make_not_entrant(); - request_nmethod_marking(); + // Code cache state change is tracked in make_not_entrant() + if (PrintMethodFlushing && Verbose) { + tty->print_cr("### Nmethod %d/" PTR_FORMAT "made not-entrant: hotness counter %d/%d threshold %f", + nm->compile_id(), nm, nm->hotness_counter(), reset_val, threshold); + } } } } diff --git a/hotspot/src/share/vm/runtime/sweeper.hpp b/hotspot/src/share/vm/runtime/sweeper.hpp index bd351760769..83040c72c4b 100644 --- a/hotspot/src/share/vm/runtime/sweeper.hpp +++ b/hotspot/src/share/vm/runtime/sweeper.hpp @@ -53,22 +53,22 @@ // is full. class NMethodSweeper : public AllStatic { - static long _traversals; // Stack scan count, also sweep ID. - static nmethod* _current; // Current nmethod - static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache - static int _flushed_count; // Nof. nmethods flushed in current sweep - static int _zombified_count; // Nof. nmethods made zombie in current sweep - static int _marked_count; // Nof. nmethods marked for reclaim in current sweep - - static volatile int _invocations; // No. of invocations left until we are completed with this pass - static volatile int _sweep_started; // Flag to control conc sweeper - - //The following are reset in mark_active_nmethods and synchronized by the safepoint - static bool _request_mark_phase; // Indicates that a change has happend and we need another mark pahse, - // always checked and reset at a safepoint so memory will be in sync. - static int _locked_seen; // Number of locked nmethods encountered during the scan - static int _not_entrant_seen_on_stack; // Number of not entrant nmethod were are still on stack + static long _traversals; // Stack scan count, also sweep ID. + static long _time_counter; // Virtual time used to periodically invoke sweeper + static long _last_sweep; // Value of _time_counter when the last sweep happened + static nmethod* _current; // Current nmethod + static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache + static int _flushed_count; // Nof. nmethods flushed in current sweep + static int _zombified_count; // Nof. nmethods made zombie in current sweep + static int _marked_for_reclamation_count; // Nof. nmethods marked for reclaim in current sweep + static volatile int _sweep_fractions_left; // Nof. invocations left until we are completed with this pass + static volatile int _sweep_started; // Flag to control conc sweeper + static volatile bool _should_sweep; // Indicates if we should invoke the sweeper + static volatile int _bytes_changed; // Counts the total nmethod size if the nmethod changed from: + // 1) alive -> not_entrant + // 2) not_entrant -> zombie + // 3) zombie -> marked_for_reclamation // Stat counters static int _total_nof_methods_reclaimed; // Accumulated nof methods flushed static jlong _total_time_sweeping; // Accumulated time sweeping @@ -81,9 +81,6 @@ class NMethodSweeper : public AllStatic { static bool sweep_in_progress(); static void sweep_code_cache(); - static void request_nmethod_marking() { _request_mark_phase = true; } - static void reset_nmethod_marking() { _request_mark_phase = false; } - static bool need_marking_phase() { return _request_mark_phase; } static int _hotness_counter_reset_val; @@ -109,13 +106,8 @@ class NMethodSweeper : public AllStatic { static int sort_nmethods_by_hotness(nmethod** nm1, nmethod** nm2); static int hotness_counter_reset_val(); - - static void notify() { - // Request a new sweep of the code cache from the beginning. No - // need to synchronize the setting of this flag since it only - // changes to false at safepoint so we can never overwrite it with false. - request_nmethod_marking(); - } + static void report_state_change(nmethod* nm); + static void possibly_enable_sweeper(); }; #endif // SHARE_VM_RUNTIME_SWEEPER_HPP From 0ef4539a9ff79798b7c02d6162385d11f67d41c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rickard=20B=C3=A4ckman?= Date: Tue, 12 Nov 2013 13:47:57 +0100 Subject: [PATCH 074/145] 8028198: SIGSEGV in PhaseIdealLoop::build_loop_late_post Reviewed-by: iveresov, kvn --- hotspot/src/share/vm/opto/loopopts.cpp | 7 +++ .../mathexact/SplitThruPhiTest.java | 50 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 hotspot/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java diff --git a/hotspot/src/share/vm/opto/loopopts.cpp b/hotspot/src/share/vm/opto/loopopts.cpp index 6529d1919ab..a7bf3ad28e8 100644 --- a/hotspot/src/share/vm/opto/loopopts.cpp +++ b/hotspot/src/share/vm/opto/loopopts.cpp @@ -42,6 +42,13 @@ Node *PhaseIdealLoop::split_thru_phi( Node *n, Node *region, int policy ) { // so disable this for now return NULL; } + + if (n->is_MathExact()) { + // MathExact has projections that are not correctly handled in the code + // below. + return NULL; + } + int wins = 0; assert(!n->is_CFG(), ""); assert(region->is_Region(), ""); diff --git a/hotspot/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java b/hotspot/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java new file mode 100644 index 00000000000..b3b0c0d7417 --- /dev/null +++ b/hotspot/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8028198 + * @summary Verify that split through phi does the right thing + * @compile SplitThruPhiTest.java + * @run main SplitThruPhiTest + * + */ + +public class SplitThruPhiTest { + public static volatile int value = 19; + public static int store = 0; + public static void main(String[] args) { + for (int i = 0; i < 150000; ++i) { + store = runTest(value); + } + } + + public static int runTest(int val) { + int result = Math.addExact(val, 1); + int total = 0; + for (int i = val; i < 200; i = Math.addExact(i, 1)) { + total += i; + } + return total; + } +} From 31d2d5121adde54d62c3191672582dea9d2d0214 Mon Sep 17 00:00:00 2001 From: Roland Westrelin Date: Tue, 12 Nov 2013 13:58:37 +0100 Subject: [PATCH 075/145] 8027632: assert(xtype->klass_is_exact()) failed: Should be exact at graphKit.cpp Receiver type collected by profiling for default method may be interface Reviewed-by: kvn, iveresov --- hotspot/src/share/vm/c1/c1_GraphBuilder.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp index 26bb8d0227e..1bfd4bad45d 100644 --- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp +++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp @@ -4338,6 +4338,11 @@ void GraphBuilder::print_stats() { #endif // PRODUCT void GraphBuilder::profile_call(ciMethod* callee, Value recv, ciKlass* known_holder, Values* obj_args, bool inlined) { + // A default method's holder is an interface + if (known_holder != NULL && known_holder->is_interface()) { + assert(known_holder->is_instance_klass() && ((ciInstanceKlass*)known_holder)->has_default_methods(), "should be default method"); + known_holder = NULL; + } append(new ProfileCall(method(), bci(), callee, recv, known_holder, obj_args, inlined)); } From 2b13aab6689e5015041d8b181e8e5a95411e12fb Mon Sep 17 00:00:00 2001 From: Erik Gahlin Date: Tue, 12 Nov 2013 14:52:42 +0100 Subject: [PATCH 076/145] 8027209: javax/management/monitor/ThreadPoolAccTest.java fails intermittently Reviewed-by: sla, jbachorik --- .../management/monitor/ThreadPoolAccTest.java | 93 +++++++------------ 1 file changed, 33 insertions(+), 60 deletions(-) diff --git a/jdk/test/javax/management/monitor/ThreadPoolAccTest.java b/jdk/test/javax/management/monitor/ThreadPoolAccTest.java index 8b3228b239f..56eb0d6a0d2 100644 --- a/jdk/test/javax/management/monitor/ThreadPoolAccTest.java +++ b/jdk/test/javax/management/monitor/ThreadPoolAccTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2013 Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,8 +33,8 @@ */ import java.security.AccessController; -import java.security.Principal; import java.security.PrivilegedAction; +import java.util.Date; import java.util.Set; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; @@ -49,8 +49,8 @@ import javax.security.auth.Subject; public class ThreadPoolAccTest { // MBean class - public class ObservedObject implements ObservedObjectMBean { - public String principal; + public static class ObservedObject implements ObservedObjectMBean { + public volatile String principal; public Integer getInteger() { setPrincipal(); return 0; @@ -65,8 +65,8 @@ public class ThreadPoolAccTest { } private void setPrincipal() { Subject subject = Subject.getSubject(AccessController.getContext()); - Set principals = subject.getPrincipals(JMXPrincipal.class); - principal = ((Principal) principals.iterator().next()).getName(); + Set principals = subject.getPrincipals(JMXPrincipal.class); + principal = principals.iterator().next().getName(); } } @@ -77,10 +77,7 @@ public class ThreadPoolAccTest { public String getString(); } - /** - * Run test - */ - public int runTest() throws Exception { + public static void main (String args[]) throws Exception { ObjectName[] mbeanNames = new ObjectName[6]; ObservedObject[] monitored = new ObservedObject[6]; @@ -93,8 +90,6 @@ public class ThreadPoolAccTest { echo(">>> CREATE MBeanServer"); MBeanServer server = MBeanServerFactory.newMBeanServer(); - String domain = server.getDefaultDomain(); - for (int i = 0; i < 6; i++) { mbeanNames[i] = new ObjectName(":type=ObservedObject,instance=" + i); @@ -132,8 +127,8 @@ public class ThreadPoolAccTest { Subject subject = new Subject(); echo(">>> RUN Principal = " + principals[i / 3]); subject.getPrincipals().add(new JMXPrincipal(principals[i / 3])); - PrivilegedAction action = new PrivilegedAction() { - public Object run() { + PrivilegedAction action = new PrivilegedAction() { + public Void run() { m.start(); return null; } @@ -141,61 +136,39 @@ public class ThreadPoolAccTest { Subject.doAs(subject, action); } - // Wait for all tasks to be submitted - // - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - echo("I fell asleep but someone woke me up"); - return 1; - } + while(!testPrincipals(monitored, monitorNames, monitor, principals)); - // Check if task principal is correct - // - for (int i = 0; i < 6; i++) { - echo(">>> Monitor = " + monitorNames[i]); - echo(">>> ObservedObject = " + - monitor[i].getObservedObject()); - echo(">>> ObservedAttribute = " + - monitor[i].getObservedAttribute()); - echo(">>> Principal = " + monitored[i].principal); - if (monitored[i].principal.equals(principals[i / 3])) { - echo("\tOK: Got Expected Principal"); - } else { - echo("\tKO: Got Unexpected Principal"); - return 1; - } - } } finally { for (int i = 0; i < 6; i++) if (monitor[i] != null) monitor[i].stop(); } - - return 0; } - /* - * Print message - */ + private static boolean testPrincipals(ObservedObject[] monitored, ObjectName[] monitorNames, + Monitor[] monitor, String[] principals) throws Exception { + for (int i = 0; i < 6; i++) { + String principal = monitored[i].principal; + String expected = principals[i / 3]; + if (principal == null) { + echo("Task not submitted " + new Date() + ". RETRY"); + return false; + } + echo(">>> Monitor = " + monitorNames[i]); + echo(">>> ObservedObject = " + monitor[i].getObservedObject()); + echo(">>> ObservedAttribute = " + monitor[i].getObservedAttribute()); + echo(">>> Principal = " + principal); + + if (expected.equals(principal)) { + echo("\tOK: Got Expected principal"); + } else { + throw new Exception("Unexpected principal. Got: " + principal + " Expected: " + expected); + } + } + return true; + } + private static void echo(String message) { System.out.println(message); } - - /* - * Standalone entry point. - * - * Run the test and report to stdout. - */ - public static void main (String args[]) throws Exception { - ThreadPoolAccTest test = new ThreadPoolAccTest(); - int error = test.runTest(); - if (error > 0) { - echo(">>> Unhappy Bye, Bye!"); - throw new IllegalStateException( - "Test FAILED: Monitor task ran on wrong security context!"); - } else { - echo(">>> Happy Bye, Bye!"); - } - } } From 9c845933bd3ed5a8f608255fd1fe9cf737a0ebbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rickard=20B=C3=A4ckman?= Date: Tue, 12 Nov 2013 14:52:48 +0100 Subject: [PATCH 077/145] 8028207: assert(_outcnt==1) failed: not unique in compile.cpp Reviewed-by: iveresov, kvn --- hotspot/src/share/vm/opto/mathexactnode.hpp | 2 +- .../intrinsics/mathexact/GVNTest.java | 60 +++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 hotspot/test/compiler/intrinsics/mathexact/GVNTest.java diff --git a/hotspot/src/share/vm/opto/mathexactnode.hpp b/hotspot/src/share/vm/opto/mathexactnode.hpp index 59983e10bcd..a30304ba93a 100644 --- a/hotspot/src/share/vm/opto/mathexactnode.hpp +++ b/hotspot/src/share/vm/opto/mathexactnode.hpp @@ -49,7 +49,7 @@ public: virtual Node* Identity(PhaseTransform* phase) { return this; } virtual Node* Ideal(PhaseGVN* phase, bool can_reshape) { return NULL; } virtual const Type* Value(PhaseTransform* phase) const { return bottom_type(); } - virtual uint hash() const { return Node::hash(); } + virtual uint hash() const { return NO_HASH; } virtual bool is_CFG() const { return false; } virtual uint ideal_reg() const { return NotAMachineReg; } diff --git a/hotspot/test/compiler/intrinsics/mathexact/GVNTest.java b/hotspot/test/compiler/intrinsics/mathexact/GVNTest.java new file mode 100644 index 00000000000..23fba15d433 --- /dev/null +++ b/hotspot/test/compiler/intrinsics/mathexact/GVNTest.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8028207 + * @summary Verify that GVN doesn't mess up the two addExacts + * @compile GVNTest.java + * @run main GVNTest + * + */ + +public class GVNTest { + public static int result = 0; + public static int value = 93; + public static void main(String[] args) { + for (int i = 0; i < 50000; ++i) { + result = runTest(value + i); + result = runTest(value + i); + result = runTest(value + i); + result = runTest(value + i); + result = runTest(value + i); + } + } + + public static int runTest(int value) { + int v = value + value; + int sum = 0; + if (v < 4032) { + for (int i = 0; i < 1023; ++i) { + sum += Math.addExact(value, value); + } + } else { + for (int i = 0; i < 321; ++i) { + sum += Math.addExact(value, value); + } + } + return sum + v; + } +} From c1096c05ab9cea5aaf3bf4bca8df4414ca5e959d Mon Sep 17 00:00:00 2001 From: Stuart Marks Date: Tue, 12 Nov 2013 16:59:51 +0100 Subject: [PATCH 078/145] 8028027: serialver should emit declaration with the 'private' modifier Reviewed-by: darcy, mchung, alanb, chegar --- jdk/src/share/classes/sun/tools/serialver/SerialVer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/src/share/classes/sun/tools/serialver/SerialVer.java b/jdk/src/share/classes/sun/tools/serialver/SerialVer.java index b2a2de60bcf..a02a897437b 100644 --- a/jdk/src/share/classes/sun/tools/serialver/SerialVer.java +++ b/jdk/src/share/classes/sun/tools/serialver/SerialVer.java @@ -211,7 +211,7 @@ public class SerialVer extends Applet { Class cl = Class.forName(classname, false, loader); ObjectStreamClass desc = ObjectStreamClass.lookup(cl); if (desc != null) { - return " static final long serialVersionUID = " + + return " private static final long serialVersionUID = " + desc.getSerialVersionUID() + "L;"; } else { return null; From 0b240955580a6842c30eda5bc767a6a7ebfc702d Mon Sep 17 00:00:00 2001 From: Leonid Romanov Date: Tue, 12 Nov 2013 20:02:12 +0400 Subject: [PATCH 079/145] 8027972: [macosx] Provide a regression test for JDK-8007006 Reviewed-by: anthony --- .../java/awt/MenuBar/8007006/bug8007006.java | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 jdk/test/java/awt/MenuBar/8007006/bug8007006.java diff --git a/jdk/test/java/awt/MenuBar/8007006/bug8007006.java b/jdk/test/java/awt/MenuBar/8007006/bug8007006.java new file mode 100644 index 00000000000..3e7270d4c36 --- /dev/null +++ b/jdk/test/java/awt/MenuBar/8007006/bug8007006.java @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8007006 + * @summary [macosx] Closing subwindow loses main window menus. + * @author Leonid Romanov + * @run main bug8007006 + */ + +import sun.awt.SunToolkit; +import java.awt.*; +import java.awt.event.*; + +public class bug8007006 { + private static Frame frame1; + private static Frame frame2; + + public static void main(String[] args) throws Exception { + if (sun.awt.OSInfo.getOSType() != sun.awt.OSInfo.OSType.MACOSX) { + System.out.println("This test is for MacOS only. Automatically passed on other platforms."); + return; + } + + System.setProperty("apple.laf.useScreenMenuBar", "true"); + + createAndShowGUI(); + sleep(1500); + + frame2.dispose(); + sleep(1500); + + SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit(); + + Robot robot = new Robot(); + robot.setAutoDelay(50); + + // open "Apple" menu (the leftmost one) + robot.keyPress(KeyEvent.VK_META); + robot.keyPress(KeyEvent.VK_SHIFT); + robot.keyPress(KeyEvent.VK_SLASH); + robot.keyRelease(KeyEvent.VK_SLASH); + robot.keyRelease(KeyEvent.VK_SHIFT); + robot.keyRelease(KeyEvent.VK_META); + + // Select our menu + robot.keyPress(KeyEvent.VK_LEFT); + robot.keyRelease(KeyEvent.VK_LEFT); + + // Select menu item + robot.keyPress(KeyEvent.VK_DOWN); + robot.keyRelease(KeyEvent.VK_DOWN); + robot.keyPress(KeyEvent.VK_ENTER); + robot.keyRelease(KeyEvent.VK_ENTER); + + sleep(0); + + MenuBar mbar = frame1.getMenuBar(); + Menu menu = mbar.getMenu(0); + CheckboxMenuItem item = (CheckboxMenuItem)menu.getItem(0); + boolean isChecked = item.getState(); + + frame1.dispose(); + + if (isChecked) { + throw new Exception("Test failed: menu item remained checked"); + } + } + + private static void createAndShowGUI() { + frame1 = new Frame("Frame 1"); + frame1.setMenuBar(createMenuBar()); + frame1.setSize(200, 200); + + frame2 = new Frame("Frame 2"); + frame2.setMenuBar(createMenuBar()); + frame2.setSize(200, 200); + + frame1.setVisible(true); + frame2.setVisible(true); + } + + private static MenuBar createMenuBar() { + MenuBar mbar = new MenuBar(); + Menu menu = new Menu("Menu"); + MenuItem item = new CheckboxMenuItem("Checked", true); + + menu.add(item); + mbar.add(menu); + + return mbar; + } + + private static void sleep(int ms) { + SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit(); + tk.realSync(); + + try { + Thread.sleep(ms); + } catch (Exception ignore) { + } + } +} From 9ab430a0d25c20a0bb3c7bc0f150d6281ef0ee91 Mon Sep 17 00:00:00 2001 From: Sergey Bylokhov Date: Tue, 12 Nov 2013 20:24:25 +0400 Subject: [PATCH 080/145] 8027696: Incorrect copyright header in the tests Reviewed-by: alanb, malenkov, mullan --- jdk/test/ProblemList.txt | 4 +-- .../Client/Client.java | 22 ++++++++++++++ .../Client/ConfigKey.java | 23 ++++++++++++++ .../Client/TestNotification.java | 27 +++++++++++++---- .../Server/ConfigKey.java | 23 ++++++++++++++ .../Server/Server.java | 23 ++++++++++++++ .../Server/Ste.java | 22 ++++++++++++++ .../Server/SteMBean.java | 23 ++++++++++++++ .../Server/TestNotification.java | 27 +++++++++++++---- .../TestSerializationMismatch.java | 22 ++++++++++++++ .../com/sun/jndi/cosnaming/CNNameParser.java | 23 ++++++++++++++ .../com/sun/jndi/cosnaming/IiopUrlIPv6.java | 23 ++++++++++++++ jdk/test/demo/zipfs/ZipFSTester.java | 2 +- .../TestAlphaCompositeForNaN.java | 23 ++++++++++++++ .../ChoiceKeyEventReaction.html | 23 ++++++++++++++ .../NonFocusablePopupMenuTest.html | 23 ++++++++++++++ .../F10TopToplevel/F10TopToplevel.html | 23 ++++++++++++++ .../UpdatingBootTime/UpdatingBootTime.html | 23 ++++++++++++++ .../MissedHtmlAndRtfBug.html | 23 ++++++++++++++ .../NextFramePositionCalculator.java | 23 ++++++++++++++ .../MissedHtmlAndRtfBug/SourcePanel.java | 23 ++++++++++++++ .../MissedHtmlAndRtfBug/TargetPanel.java | 23 ++++++++++++++ .../LoopRobustness/LoopRobustness.html | 23 ++++++++++++++ .../MainAppContext/MainAppContext.java | 23 ++++++++++++++ .../PostEventOrderingTest.java | 4 +-- .../FileDialogReturnTest.html | 23 ++++++++++++++ .../FileNameOverrideTest.html | 23 ++++++++++++++ .../FileNameOverrideTest.java | 23 ++++++++++++++ .../FilenameFilterTest.html | 23 ++++++++++++++ .../FileDialog/MultipleMode/MultipleMode.html | 23 ++++++++++++++ .../RegexpFilterTest/RegexpFilterTest.html | 23 ++++++++++++++ .../SaveFileNameOverrideTest.html | 23 ++++++++++++++ .../SaveFileNameOverrideTest.java | 23 ++++++++++++++ jdk/test/java/awt/Focus/6981400/Test1.java | 4 +-- jdk/test/java/awt/Focus/6981400/Test2.java | 4 +-- jdk/test/java/awt/Focus/6981400/Test3.java | 4 +-- .../AppletInitialFocusTest.html | 23 ++++++++++++++ .../AppletInitialFocusTest1.html | 23 ++++++++++++++ .../AppletInitialFocusTest1.java | 28 ++++++++++++----- .../DeiconifiedFrameLoosesFocus.html | 23 ++++++++++++++ .../FocusOwnerFrameOnClick.java | 4 +-- .../FocusTraversalPolicy/InitialFTP.java | 23 ++++++++++++++ .../FocusTraversalPolicy/InitialFTP_AWT.java | 23 ++++++++++++++ .../InitialFTP_Swing.java | 23 ++++++++++++++ .../ModalBlockedStealsFocusTest.html | 23 ++++++++++++++ .../Focus/ToFrontFocusTest/ToFrontFocus.html | 23 ++++++++++++++ .../WindowInitialFocusTest.html | 23 ++++++++++++++ .../FrameSetSizeStressTest.java | 4 +-- .../InitialMaximizedTest.html | 23 ++++++++++++++ .../awt/Frame/ShownOnPack/ShownOnPack.html | 23 ++++++++++++++ .../DrawImageBG/SystemBgColorTest.java | 23 ++++++++++++++ .../FillTexturePaint/FillTexturePaint.java | 4 +-- .../InputMethodsTest/InputMethodsTest.html | 23 ++++++++++++++ jdk/test/java/awt/JAWT/JAWT.sh | 4 +-- jdk/test/java/awt/JAWT/Makefile.cygwin | 4 +-- jdk/test/java/awt/JAWT/Makefile.unix | 4 +-- jdk/test/java/awt/JAWT/Makefile.win | 4 +-- jdk/test/java/awt/JAWT/MyCanvas.java | 4 +-- jdk/test/java/awt/JAWT/myfile.c | 4 +-- jdk/test/java/awt/JAWT/myfile.cpp | 4 +-- .../DefaultPolicyChange_AWT.java | 23 ++++++++++++++ .../DefaultPolicyChange_Swing.java | 23 ++++++++++++++ .../ButtonActionKeyTest.html | 23 ++++++++++++++ .../MenuItemActivatedTest.html | 23 ++++++++++++++ .../SubMenuShowTest/SubMenuShowTest.html | 23 ++++++++++++++ .../TypeAhead/TestDialogTypeAhead.html | 23 ++++++++++++++ .../awt/List/SetFontTest/SetFontTest.html | 23 ++++++++++++++ .../NullMenuLabelTest/NullMenuLabelTest.java | 23 ++++++++++++++ .../ExtraMouseClick/ExtraMouseClick.html | 23 ++++++++++++++ .../ExtraButtonDrag.java | 23 ++++++++++++++ .../ModifierPermutation.java | 23 ++++++++++++++ .../MouseModifiersUnitTest_Extra.java | 23 ++++++++++++++ .../MouseModifiersUnitTest_Standard.java | 23 ++++++++++++++ .../TitleBarDoubleClick.html | 23 ++++++++++++++ ...slucencyThrowsExceptionWhenFullScreen.java | 4 +-- .../WindowGCChangeTest.html | 23 ++++++++++++++ .../java/awt/PrintJob/Text/stringwidth.sh | 21 +++++++++++++ .../AcceptExtraMouseButtons.java | 23 ++++++++++++++ .../ManualInstructions.java | 23 ++++++++++++++ .../RobotExtraButton/RobotExtraButton.java | 23 ++++++++++++++ .../ScrollPanePreferredSize.java | 4 +-- .../MouseOverScrollbarWhenTyping/Test.java | 23 ++++++++++++++ .../MouseOverScrollbarWhenTyping/Test1.java | 23 ++++++++++++++ .../HoveringAndDraggingTest.html | 23 ++++++++++++++ .../TextAreaTwicePack/TextAreaTwicePack.java | 4 +-- .../SelectionAutoscrollTest.html | 23 ++++++++++++++ .../ScrollSelectionTest.html | 23 ++++++++++++++ .../AWTEventListener/AWTListener.java | 23 ++++++++++++++ .../ExceptionContract/ExceptionContract.java | 4 +-- .../Headless/GetPrintJob/GetPrintJob.java | 23 ++++++++++++++ .../GetPrintJob/GetPrintJobHeadless.java | 23 ++++++++++++++ .../Toolkit/SecurityTest/SecurityTest2.java | 23 ++++++++++++++ .../ToolkitPropertyTest/SystemPropTest_1.java | 23 ++++++++++++++ .../ToolkitPropertyTest/SystemPropTest_2.java | 23 ++++++++++++++ .../ToolkitPropertyTest/SystemPropTest_3.java | 23 ++++++++++++++ .../ToolkitPropertyTest/SystemPropTest_4.java | 23 ++++++++++++++ .../ToolkitPropertyTest/SystemPropTest_5.java | 23 ++++++++++++++ .../ToolkitPropertyTest_Disable.java | 23 ++++++++++++++ .../ToolkitPropertyTest_Enable.java | 23 ++++++++++++++ jdk/test/java/awt/Window/Grab/GrabTest.java | 4 +-- .../TranslucentShapedFrameTest/TSFrame.java | 4 +-- .../TranslucentShapedFrameTest.java | 4 +-- .../IOExceptionIfEncodedURLTest.sh | 4 +-- .../IOExceptionIfEncodedURLTest/test.html | 23 ++++++++++++++ .../DragUnicodeBetweenJVMTest.html | 23 ++++++++++++++ .../ManualHTMLDataFlavorTest.html | 23 ++++++++++++++ .../dnd/Button2DragTest/Button2DragTest.html | 23 ++++++++++++++ .../DnDFileGroupDescriptor.html | 23 ++++++++++++++ .../DnDFileGroupDescriptor.java | 4 +-- .../dnd/DnDFileGroupDescriptor/DnDTarget.java | 4 +-- .../FileListBetweenJVMsTest.html | 23 ++++++++++++++ .../awt/dnd/ImageDecoratedDnD/DnDSource.java | 4 +-- .../awt/dnd/ImageDecoratedDnD/DnDTarget.java | 4 +-- .../ImageDecoratedDnD/ImageDecoratedDnD.html | 23 ++++++++++++++ .../ImageDecoratedDnD/ImageDecoratedDnD.java | 4 +-- .../dnd/ImageDecoratedDnD/ImageGenerator.java | 4 +-- .../awt/dnd/ImageDecoratedDnD/MyCursor.java | 4 +-- .../dnd/ImageDecoratedDnDInOut/DnDSource.java | 4 +-- .../dnd/ImageDecoratedDnDInOut/DnDTarget.java | 4 +-- .../ImageDecoratedDnDInOut.html | 23 ++++++++++++++ .../ImageDecoratedDnDInOut.java | 4 +-- .../ImageGenerator.java | 4 +-- .../dnd/ImageDecoratedDnDInOut/MyCursor.java | 4 +-- .../ImageDecoratedDnDNegative/DnDSource.java | 4 +-- .../ImageDecoratedDnDNegative/DnDTarget.java | 4 +-- .../ImageDecoratedDnDNegative.html | 23 ++++++++++++++ .../ImageDecoratedDnDNegative.java | 4 +-- .../ImageGenerator.java | 4 +-- .../ImageDecoratedDnDNegative/MyCursor.java | 4 +-- .../URIListBetweenJVMsTest.html | 23 ++++++++++++++ .../ButtonArraysEquality.java | 23 ++++++++++++++ .../AcceleratorTest/AcceleratorTest.html | 23 ++++++++++++++ .../AcceleratorTest/AcceleratorTest.java | 23 ++++++++++++++ .../KeyReleasedInAppletTest.html | 23 ++++++++++++++ .../event/KeyEvent/KeyTyped/CtrlASCII.html | 23 ++++++++++++++ .../AWTPanelSmoothWheel.html | 23 ++++++++++++++ .../AcceptExtraButton/AcceptExtraButton.java | 23 ++++++++++++++ .../CTORRestrictions/CTORRestrictions.java | 23 ++++++++++++++ .../CTORRestrictions_Disable.java | 23 ++++++++++++++ .../CheckGetMaskForButton.java | 23 ++++++++++++++ .../FrameMouseEventAbsoluteCoordsTest.html | 23 ++++++++++++++ .../MenuDragMouseEventAbsoluteCoordsTest.html | 23 ++++++++++++++ .../MouseClickTest/MouseClickTest.html | 23 ++++++++++++++ .../MouseWheelEventAbsoluteCoordsTest.html | 23 ++++++++++++++ .../MouseEvent/RobotLWTest/RobotLWTest.html | 23 ++++++++++++++ .../InfiniteRecursion_2.html | 23 ++++++++++++++ .../InfiniteRecursion_3.html | 23 ++++++++++++++ .../event/OtherEvents/UngrabID/UngrabID.java | 4 +-- jdk/test/java/awt/im/4490692/bug4490692.html | 23 ++++++++++++++ jdk/test/java/awt/im/4959409/bug4959409.html | 23 ++++++++++++++ jdk/test/java/awt/im/JTextFieldTest.html | 24 ++++++++++++++- .../awt/image/BufferedImage/TinyScale.java | 23 ++++++++++++++ .../java/awt/image/DrawImage/EABlitTest.java | 4 +-- .../CustomPrintService/PrintServiceStub.java | 4 +-- .../SetPrintServiceTest.java | 4 +-- .../java/awt/print/bug8023392/bug8023392.html | 23 ++++++++++++++ .../java/awt/print/bug8023392/bug8023392.java | 4 +-- .../Introspector/6380849/beans/FirstBean.java | 23 ++++++++++++++ .../6380849/beans/FirstBeanBeanInfo.java | 23 ++++++++++++++ .../6380849/beans/SecondBean.java | 23 ++++++++++++++ .../Introspector/6380849/beans/ThirdBean.java | 23 ++++++++++++++ .../6380849/infos/SecondBeanBeanInfo.java | 23 ++++++++++++++ .../6380849/infos/ThirdBeanBeanInfo.java | 23 ++++++++++++++ .../Introspector/6976577/test/Accessor.java | 23 ++++++++++++++ .../beans/Introspector/7122138/pack/Sub.java | 23 ++++++++++++++ .../Introspector/7122138/pack/Super.java | 23 ++++++++++++++ .../java/beans/XMLEncoder/6380849/Bean.java | 23 ++++++++++++++ .../6380849/BeanPersistenceDelegate.java | 23 ++++++++++++++ .../io/FileInputStream/OpsAfterClose.java | 23 ++++++++++++++ .../io/FileOutputStream/OpsAfterClose.java | 23 ++++++++++++++ .../io/RandomAccessFile/OpsAfterClose.java | 23 ++++++++++++++ .../lang/StringBuffer/BufferForwarding.java | 4 +-- .../lang/StringBuilder/BuilderForwarding.java | 4 +-- .../lang/instrument/RedefineBigClassApp.java | 2 +- .../lang/instrument/RetransformBigClass.sh | 2 +- .../instrument/RetransformBigClassApp.java | 2 +- .../java/lang/invoke/AccessControlTest.java | 4 +-- jdk/test/java/lang/invoke/BigArityTest.java | 4 +-- jdk/test/java/lang/invoke/ClassValueTest.java | 4 +-- .../java/lang/invoke/InvokeGenericTest.java | 4 +-- .../java/lang/invoke/JavaDocExamplesTest.java | 4 +-- .../java/lang/invoke/MethodHandlesTest.java | 4 +-- .../java/lang/invoke/PermuteArgsTest.java | 4 +-- .../java/lang/invoke/PrivateInvokeTest.java | 4 +-- .../java/lang/invoke/RevealDirectTest.java | 4 +-- jdk/test/java/lang/invoke/RicochetTest.java | 4 +-- .../invoke/TestCatchExceptionWithVarargs.java | 4 +-- .../java/lang/invoke/ThrowExceptionsTest.java | 4 +-- .../lang/invoke/remote/RemoteExample.java | 4 +-- .../lang/ref/ReferenceEnqueuePending.java | 3 +- .../net/URLClassLoader/closetest/build.sh | 30 +++++++++---------- .../CertPathBuilder/selfIssued/generate.sh | 4 +-- .../CertPathValidator/indirectCRL/generate.sh | 4 +-- .../nameConstraints/generate.sh | 4 +-- .../CertificateRevokedException/Basic.java | 23 ++++++++++++++ .../util/Calendar/CldrFormatNamesTest.java | 4 +-- .../java/util/Locale/LocaleEnhanceTest.java | 4 +-- jdk/test/java/util/Locale/LocaleTestFmwk.java | 4 +-- .../util/Locale/tools/EquivMapsGenerator.java | 4 +-- jdk/test/java/util/TimeZone/Bug6912560.java | 4 +-- .../util/TimeZone/CLDRDisplayNamesTest.java | 4 +-- .../java/util/TimeZone/ListTimeZones.java | 4 +-- .../java/util/TimeZone/OldIDMappingTest.java | 4 +-- .../java/util/TimeZone/OldIDMappingTest.sh | 4 +-- .../util/TimeZone/SetDefaultSecurityTest.java | 4 +-- .../TimeZone/TimeZoneDatePermissionCheck.java | 4 +-- .../java/util/TimeZone/TzIDOldMapping.java | 4 +-- .../util/prefs/AddNodeChangeListener.java | 4 +-- .../java/util/prefs/CheckUserPrefFirst.java | 4 +-- .../java/util/prefs/CheckUserPrefLater.java | 4 +-- jdk/test/java/util/regex/RegExTest.java | 4 +-- .../providersrc/UserControlProvider.java | 4 +-- jdk/test/java/util/zip/LargeZip.java | 4 +-- jdk/test/java/util/zip/TotalInOut.java | 4 +-- .../plugins/gif/GifTransparencyTest.java | 23 ++++++++++++++ .../modelmbean/LoggingExceptionTest.java | 23 ++++++++++++++ .../connection/MultiThreadDeadLockTest.java | 23 ++++++++++++-- jdk/test/javax/print/DialogMargins.java | 4 +-- .../print/StreamPrintingOrientation.java | 4 +-- .../javax/print/applet/AppletPrintLookup.html | 23 ++++++++++++++ .../javax/sound/midi/File/SMPTESequence.java | 23 ++++++++++++++ .../AudioFloatConverter/GetFormat.java | 4 +-- .../AudioFloatConverter/ToFloatArray.java | 4 +-- .../AudioFloatFormatConverter/SkipTest.java | 4 +-- .../AudioFloatInputStream/Available.java | 4 +-- .../Gervill/AudioFloatInputStream/Close.java | 4 +-- .../AudioFloatInputStream/GetFormat.java | 4 +-- .../AudioFloatInputStream/GetFrameLength.java | 4 +-- .../AudioFloatInputStream/MarkSupported.java | 4 +-- .../Gervill/AudioFloatInputStream/Read.java | 4 +-- .../AudioFloatInputStream/ReadFloatArray.java | 4 +-- .../ReadFloatArrayIntInt.java | 4 +-- .../Gervill/AudioFloatInputStream/Reset.java | 4 +-- .../Gervill/AudioFloatInputStream/Skip.java | 4 +-- .../TestGetSoundbankFile.java | 4 +-- .../TestGetSoundbankInputStream.java | 4 +-- .../TestGetSoundbankInputStream2.java | 4 +-- .../TestGetSoundbankUrl.java | 4 +-- .../TestCreateSoundbank.java | 4 +-- .../ModelByteBuffer/GetInputStream.java | 4 +-- .../midi/Gervill/ModelByteBuffer/GetRoot.java | 4 +-- .../midi/Gervill/ModelByteBuffer/Load.java | 4 +-- .../midi/Gervill/ModelByteBuffer/LoadAll.java | 4 +-- .../NewModelByteBufferByteArray.java | 4 +-- .../NewModelByteBufferByteArrayIntInt.java | 4 +-- .../NewModelByteBufferFile.java | 4 +-- .../NewModelByteBufferFileLongLong.java | 4 +-- .../RandomFileInputStream/Available.java | 4 +-- .../RandomFileInputStream/Close.java | 4 +-- .../RandomFileInputStream/MarkReset.java | 4 +-- .../RandomFileInputStream/MarkSupported.java | 4 +-- .../RandomFileInputStream/Read.java | 4 +-- .../RandomFileInputStream/ReadByte.java | 4 +-- .../RandomFileInputStream/ReadByteIntInt.java | 4 +-- .../RandomFileInputStream/Skip.java | 4 +-- .../ModelByteBuffer/SubbufferLong.java | 4 +-- .../ModelByteBuffer/SubbufferLongLong.java | 4 +-- .../SubbufferLongLongBoolean.java | 4 +-- .../midi/Gervill/ModelByteBuffer/Unload.java | 4 +-- .../midi/Gervill/ModelByteBuffer/WriteTo.java | 4 +-- .../GetAttenuation.java | 4 +-- .../ModelByteBufferWavetable/GetChannels.java | 4 +-- .../GetLoopLength.java | 4 +-- .../GetLoopStart.java | 4 +-- .../GetPitchCorrection.java | 4 +-- ...delByteBufferWavetableModelByteBuffer.java | 4 +-- ...erWavetableModelByteBufferAudioFormat.java | 4 +-- ...etableModelByteBufferAudioFormatFloat.java | 4 +-- ...teBufferWavetableModelByteBufferFloat.java | 4 +-- .../ModelByteBufferWavetable/Open.java | 4 +-- .../ModelByteBufferWavetable/OpenStream.java | 4 +-- .../Set8BitExtensionBuffer.java | 4 +-- .../ModelByteBufferWavetable/SetLoopType.java | 4 +-- .../ModelDestination/NewModelDestination.java | 4 +-- .../NewModelDestinationModelIdentifier.java | 4 +-- .../ModelDestination/SetIdentifier.java | 4 +-- .../ModelDestination/SetTransform.java | 4 +-- .../Gervill/ModelIdentifier/EqualsObject.java | 4 +-- .../NewModelIdentifierString.java | 4 +-- .../NewModelIdentifierStringInt.java | 4 +-- .../NewModelIdentifierStringString.java | 4 +-- .../NewModelIdentifierStringStringInt.java | 4 +-- .../Gervill/ModelIdentifier/SetInstance.java | 4 +-- .../Gervill/ModelIdentifier/SetObject.java | 4 +-- .../Gervill/ModelIdentifier/SetVariable.java | 4 +-- .../ModelPerformer/GetOscillators.java | 4 +-- .../ModelPerformer/SetConnectionBlocks.java | 4 +-- .../SetDefaultConnectionsEnabled.java | 4 +-- .../ModelPerformer/SetExclusiveClass.java | 4 +-- .../Gervill/ModelPerformer/SetKeyFrom.java | 4 +-- .../midi/Gervill/ModelPerformer/SetKeyTo.java | 4 +-- .../midi/Gervill/ModelPerformer/SetName.java | 4 +-- .../ModelPerformer/SetSelfNonExclusive.java | 4 +-- .../Gervill/ModelPerformer/SetVelFrom.java | 4 +-- .../midi/Gervill/ModelPerformer/SetVelTo.java | 4 +-- .../Gervill/ModelSource/NewModelSource.java | 4 +-- .../NewModelSourceModelIdentifier.java | 4 +-- .../NewModelSourceModelIdentifierBoolean.java | 4 +-- ...elSourceModelIdentifierBooleanBoolean.java | 4 +-- ...ourceModelIdentifierBooleanBooleanInt.java | 4 +-- ...elSourceModelIdentifierModelTransform.java | 4 +-- .../Gervill/ModelSource/SetIdentifier.java | 4 +-- .../Gervill/ModelSource/SetTransform.java | 4 +-- .../ModelStandardIndexedDirectorTest.java | 4 +-- .../NewModelStandardTransform.java | 4 +-- .../NewModelStandardTransformBoolean.java | 4 +-- ...wModelStandardTransformBooleanBoolean.java | 4 +-- ...delStandardTransformBooleanBooleanInt.java | 4 +-- .../ModelStandardTransform/SetDirection.java | 4 +-- .../ModelStandardTransform/SetPolarity.java | 4 +-- .../ModelStandardTransform/SetTransform.java | 4 +-- .../TransformAbsolute.java | 4 +-- .../TransformConcave.java | 4 +-- .../TransformConvex.java | 4 +-- .../TransformLinear.java | 4 +-- .../TransformSwitch.java | 4 +-- .../Gervill/RiffReaderWriter/Available.java | 4 +-- .../midi/Gervill/RiffReaderWriter/Close.java | 4 +-- .../RiffReaderWriter/GetFilePointer.java | 4 +-- .../Gervill/RiffReaderWriter/GetSize.java | 4 +-- .../RiffReaderWriter/HasNextChunk.java | 4 +-- .../midi/Gervill/RiffReaderWriter/Read.java | 4 +-- .../Gervill/RiffReaderWriter/ReadByte.java | 4 +-- .../RiffReaderWriter/ReadByteArrayIntInt.java | 4 +-- .../Gervill/RiffReaderWriter/ReadInt.java | 4 +-- .../Gervill/RiffReaderWriter/ReadLong.java | 4 +-- .../Gervill/RiffReaderWriter/ReadShort.java | 4 +-- .../Gervill/RiffReaderWriter/ReadString.java | 4 +-- .../RiffReaderWriter/ReadUnsignedByte.java | 4 +-- .../RiffReaderWriter/ReadUnsignedInt.java | 4 +-- .../RiffReaderWriter/ReadUnsignedShort.java | 4 +-- .../midi/Gervill/RiffReaderWriter/Skip.java | 4 +-- .../RiffReaderWriter/WriteOutputStream.java | 4 +-- .../TestGetSoundbankFile.java | 4 +-- .../TestGetSoundbankInputStream.java | 4 +-- .../TestGetSoundbankInputStream2.java | 4 +-- .../TestGetSoundbankUrl.java | 4 +-- .../SimpleInstrument/AddModelInstrument.java | 4 +-- .../AddModelInstrumentIntInt.java | 4 +-- .../AddModelInstrumentIntIntIntInt.java | 4 +-- .../AddModelInstrumentIntIntIntIntInt.java | 4 +-- .../SimpleInstrument/AddModelPerformer.java | 4 +-- .../AddModelPerformerArray.java | 4 +-- .../AddModelPerformerArrayIntInt.java | 4 +-- .../AddModelPerformerArrayIntIntIntInt.java | 4 +-- ...AddModelPerformerArrayIntIntIntIntInt.java | 4 +-- .../AddModelPerformerIntInt.java | 4 +-- .../AddModelPerformerIntIntIntInt.java | 4 +-- .../AddModelPerformerIntIntIntIntInt.java | 4 +-- .../midi/Gervill/SimpleInstrument/Clear.java | 4 +-- .../Gervill/SimpleInstrument/SetName.java | 4 +-- .../Gervill/SimpleInstrument/SetPatch.java | 4 +-- .../SimpleSoundbank/AddInstrument.java | 4 +-- .../Gervill/SimpleSoundbank/AddResource.java | 4 +-- .../SimpleSoundbank/GetInstrument.java | 4 +-- .../SimpleSoundbank/RemoveInstrument.java | 4 +-- .../SimpleSoundbank/SetDescription.java | 4 +-- .../midi/Gervill/SimpleSoundbank/SetName.java | 4 +-- .../Gervill/SimpleSoundbank/SetVendor.java | 4 +-- .../Gervill/SimpleSoundbank/SetVersion.java | 4 +-- .../midi/Gervill/SoftAudioBuffer/Array.java | 4 +-- .../midi/Gervill/SoftAudioBuffer/Clear.java | 4 +-- .../midi/Gervill/SoftAudioBuffer/Get.java | 4 +-- .../SoftAudioBuffer/NewSoftAudioBuffer.java | 4 +-- .../DummySourceDataLine.java | 4 +-- .../SoftAudioSynthesizer/GetFormat.java | 4 +-- .../SoftAudioSynthesizer/GetPropertyInfo.java | 4 +-- .../Gervill/SoftAudioSynthesizer/Open.java | 4 +-- .../SoftAudioSynthesizer/OpenStream.java | 4 +-- .../midi/Gervill/SoftChannel/AllNotesOff.java | 4 +-- .../midi/Gervill/SoftChannel/AllSoundOff.java | 4 +-- .../Gervill/SoftChannel/ChannelPressure.java | 4 +-- .../midi/Gervill/SoftChannel/Controller.java | 4 +-- .../Gervill/SoftChannel/LocalControl.java | 4 +-- .../sound/midi/Gervill/SoftChannel/Mono.java | 4 +-- .../sound/midi/Gervill/SoftChannel/Mute.java | 4 +-- .../midi/Gervill/SoftChannel/NoteOff.java | 4 +-- .../midi/Gervill/SoftChannel/NoteOff2.java | 4 +-- .../midi/Gervill/SoftChannel/NoteOn.java | 4 +-- .../Gervill/SoftChannel/NoteOverFlowTest.java | 4 +-- .../SoftChannel/NoteOverFlowTest2.java | 4 +-- .../sound/midi/Gervill/SoftChannel/Omni.java | 4 +-- .../midi/Gervill/SoftChannel/PitchBend.java | 4 +-- .../Gervill/SoftChannel/PolyPressure.java | 4 +-- .../SoftChannel/ProgramAndBankChange.java | 4 +-- .../Gervill/SoftChannel/ProgramChange.java | 4 +-- .../SoftChannel/ResetAllControllers.java | 4 +-- .../Gervill/SoftChannel/SoftTestUtils.java | 4 +-- .../sound/midi/Gervill/SoftChannel/Solo.java | 4 +-- .../SoftCubicResampler/Interpolate.java | 4 +-- .../Gervill/SoftFilter/TestProcessAudio.java | 4 +-- .../SoftLanczosResampler/Interpolate.java | 4 +-- .../SoftLimiter/ProcessAudio_replace_mix.java | 4 +-- .../ProcessAudio_replace_mix_mono.java | 4 +-- ...ocessAudio_replace_mix_mono_overdrive.java | 4 +-- .../ProcessAudio_replace_mix_overdrive.java | 4 +-- .../ProcessAudio_replace_normal.java | 4 +-- .../ProcessAudio_replace_normal_mono.java | 4 +-- .../ProcessAudio_replace_overdrive.java | 4 +-- .../ProcessAudio_replace_overdrive_mono.java | 4 +-- .../SoftLinearResampler/Interpolate.java | 4 +-- .../SoftLinearResampler2/Interpolate.java | 4 +-- .../TestProcessControlLogic.java | 4 +-- .../SoftPointResampler/Interpolate.java | 4 +-- .../midi/Gervill/SoftProvider/GetDevice.java | 4 +-- .../midi/Gervill/SoftReceiver/Close.java | 4 +-- .../Gervill/SoftReceiver/GetMidiDevice.java | 4 +-- .../SoftReceiver/Send_ActiveSense.java | 4 +-- .../SoftReceiver/Send_AllNotesOff.java | 4 +-- .../SoftReceiver/Send_AllSoundOff.java | 4 +-- .../SoftReceiver/Send_ChannelPressure.java | 4 +-- .../Gervill/SoftReceiver/Send_Controller.java | 4 +-- .../midi/Gervill/SoftReceiver/Send_Mono.java | 4 +-- .../Gervill/SoftReceiver/Send_NoteOff.java | 4 +-- .../Gervill/SoftReceiver/Send_NoteOn.java | 4 +-- .../SoftReceiver/Send_NoteOn_AllChannels.java | 4 +-- .../SoftReceiver/Send_NoteOn_Delayed.java | 4 +-- .../SoftReceiver/Send_NoteOn_Multiple.java | 4 +-- .../midi/Gervill/SoftReceiver/Send_Omni.java | 4 +-- .../Gervill/SoftReceiver/Send_PitchBend.java | 4 +-- .../SoftReceiver/Send_PolyPressure.java | 4 +-- .../SoftReceiver/Send_ProgramChange.java | 4 +-- .../Send_ResetAllControllers.java | 4 +-- .../Gervill/SoftReceiver/SoftTestUtils.java | 4 +-- .../SoftSincResampler/Interpolate.java | 4 +-- .../midi/Gervill/SoftSynthesizer/Close.java | 4 +-- .../SoftSynthesizer/DummySourceDataLine.java | 4 +-- .../GetAvailableInstruments.java | 4 +-- .../GetAvailableInstruments2.java | 4 +-- .../Gervill/SoftSynthesizer/GetChannels.java | 4 +-- .../SoftSynthesizer/GetDefaultSoundbank.java | 4 +-- .../SoftSynthesizer/GetDeviceInfo.java | 4 +-- .../Gervill/SoftSynthesizer/GetLatency.java | 4 +-- .../SoftSynthesizer/GetLoadedInstruments.java | 4 +-- .../GetLoadedInstruments2.java | 4 +-- .../SoftSynthesizer/GetMaxPolyphony.java | 4 +-- .../SoftSynthesizer/GetMaxReceivers.java | 4 +-- .../SoftSynthesizer/GetMaxTransmitters.java | 4 +-- .../GetMicrosecondPosition.java | 4 +-- .../SoftSynthesizer/GetPropertyInfo.java | 4 +-- .../Gervill/SoftSynthesizer/GetReceiver.java | 4 +-- .../Gervill/SoftSynthesizer/GetReceiver2.java | 4 +-- .../Gervill/SoftSynthesizer/GetReceivers.java | 4 +-- .../SoftSynthesizer/GetTransmitter.java | 4 +-- .../SoftSynthesizer/GetTransmitters.java | 4 +-- .../SoftSynthesizer/GetVoiceStatus.java | 4 +-- .../SoftSynthesizer/ImplicitOpenClose.java | 4 +-- .../midi/Gervill/SoftSynthesizer/IsOpen.java | 4 +-- .../SoftSynthesizer/IsSoundbankSupported.java | 4 +-- .../SoftSynthesizer/LoadAllInstruments.java | 4 +-- .../SoftSynthesizer/LoadInstrument.java | 4 +-- .../SoftSynthesizer/LoadInstruments.java | 4 +-- .../midi/Gervill/SoftSynthesizer/Open.java | 4 +-- .../Gervill/SoftSynthesizer/OpenStream.java | 4 +-- .../SoftSynthesizer/RemapInstrument.java | 4 +-- .../TestDisableLoadDefaultSoundbank.java | 4 +-- .../TestPreciseTimestampRendering.java | 4 +-- .../Gervill/SoftSynthesizer/TestRender1.java | 4 +-- .../SoftSynthesizer/UnloadAllInstruments.java | 4 +-- .../SoftSynthesizer/UnloadInstrument.java | 4 +-- .../SoftSynthesizer/UnloadInstruments.java | 4 +-- .../midi/Gervill/SoftTuning/GetName.java | 4 +-- .../midi/Gervill/SoftTuning/GetTuning.java | 4 +-- .../midi/Gervill/SoftTuning/GetTuningInt.java | 4 +-- .../sound/midi/Gervill/SoftTuning/Load1.java | 4 +-- .../sound/midi/Gervill/SoftTuning/Load2.java | 4 +-- .../sound/midi/Gervill/SoftTuning/Load4.java | 4 +-- .../sound/midi/Gervill/SoftTuning/Load5.java | 4 +-- .../sound/midi/Gervill/SoftTuning/Load6.java | 4 +-- .../sound/midi/Gervill/SoftTuning/Load7.java | 4 +-- .../sound/midi/Gervill/SoftTuning/Load8.java | 4 +-- .../sound/midi/Gervill/SoftTuning/Load9.java | 4 +-- .../Gervill/SoftTuning/NewSoftTuning.java | 4 +-- .../SoftTuning/NewSoftTuningByteArray.java | 4 +-- .../SoftTuning/NewSoftTuningPatch.java | 4 +-- .../NewSoftTuningPatchByteArray.java | 4 +-- .../Gervill/SoftTuning/RealTimeTuning.java | 4 +-- .../MidiDeviceConnectors/TestAllDevices.java | 4 +-- .../Sequencer/SequencerImplicitSynthOpen.java | 23 ++++++++++++++ .../AudioFormat/Matches_NOT_SPECIFIED.java | 4 +-- .../AudioFormat/PCM_FLOAT_support.java | 4 +-- .../javax/sound/sampled/Clip/ClipSetPos.java | 4 +-- .../DataLine_ArrayIndexOutOfBounds.java | 23 ++++++++++++++ .../sound/sampled/DirectAudio/bug6400879.java | 4 +-- .../sampled/FileWriter/AlawEncoderSync.java | 4 +-- .../sampled/FileWriter/WriterCloseInput.java | 23 ++++++++++++++ .../swing/JCheckBox/4449413/bug4449413.html | 23 ++++++++++++++ .../swing/JColorChooser/Test4222508.html | 23 ++++++++++++++ .../swing/JColorChooser/Test4759306.html | 23 ++++++++++++++ .../swing/JColorChooser/Test4759934.html | 23 ++++++++++++++ .../swing/JColorChooser/Test4887836.html | 23 ++++++++++++++ .../swing/JColorChooser/Test6348456.html | 23 ++++++++++++++ .../swing/JColorChooser/Test6977726.html | 23 ++++++++++++++ .../swing/JComponent/4337267/bug4337267.java | 23 ++++++++++++++ .../swing/JComponent/6683775/bug6683775.java | 23 ++++++++++++++ .../javax/swing/JEditorPane/4492274/test.html | 23 ++++++++++++++ .../javax/swing/JEditorPane/6917744/test.html | 23 ++++++++++++++ .../javax/swing/JEditorPane/bug4714674.java | 23 ++++++++++++++ .../JFileChooser/6570445/bug6570445.java | 23 ++++++++++++++ .../JFileChooser/6698013/bug6698013.html | 23 ++++++++++++++ .../JFileChooser/6698013/bug6698013.java | 23 ++++++++++++++ .../JFileChooser/6798062/bug6798062.html | 23 ++++++++++++++ .../JInternalFrame/6726866/bug6726866.html | 23 ++++++++++++++ .../JInternalFrame/6726866/bug6726866.java | 23 ++++++++++++++ .../swing/JSlider/4987336/bug4987336.html | 23 ++++++++++++++ .../swing/JSlider/6524424/bug6524424.html | 23 ++++++++++++++ .../swing/JSlider/6587742/bug6587742.html | 23 ++++++++++++++ .../swing/JSlider/6742358/bug6742358.html | 23 ++++++++++++++ .../swing/JTabbedPane/4310381/bug4310381.html | 23 ++++++++++++++ .../javax/swing/JTree/4314199/bug4314199.html | 23 ++++++++++++++ .../SwingUtilities/7170657/bug7170657.java | 4 +-- jdk/test/javax/swing/border/Test4129681.html | 23 ++++++++++++++ jdk/test/javax/swing/border/Test4243289.html | 23 ++++++++++++++ jdk/test/javax/swing/border/Test4247606.html | 23 ++++++++++++++ jdk/test/javax/swing/border/Test4252164.html | 23 ++++++++++++++ jdk/test/javax/swing/border/Test4760089.html | 23 ++++++++++++++ jdk/test/javax/swing/border/Test6910490.html | 23 ++++++++++++++ jdk/test/javax/swing/border/Test7022041.java | 4 +-- .../html/TableView/7030332/bug7030332.html | 23 ++++++++++++++ .../ConstructorsNullTest.html | 23 ++++++++++++++ jdk/test/sun/nio/cs/EUC_TW_OLD.java | 4 +-- jdk/test/sun/nio/cs/TestStringCoding.java | 4 +-- jdk/test/sun/nio/cs/X11CNS11643.java | 4 +-- jdk/test/sun/nio/cs/X11CNS11643P1.java | 4 +-- jdk/test/sun/nio/cs/X11CNS11643P2.java | 4 +-- jdk/test/sun/nio/cs/X11CNS11643P3.java | 4 +-- .../pkcs11/KeyStore/SecretKeysBasic.java | 2 +- .../sun/security/pkcs11/ec/TestECGenSpec.java | 2 +- .../security/pkcs11/ec/TestKeyFactory.java | 2 +- .../sun/util/resources/Locale/Bug6275682.java | 23 ++++++++++++++ jdk/test/tools/launcher/DiacriticTest.java | 2 +- .../DefaultMethodRegressionTests.java | 4 +-- .../DefaultMethodRegressionTestsRun.java | 4 +-- 533 files changed, 4211 insertions(+), 1112 deletions(-) diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt index ea99549a0f7..0760625a67d 100644 --- a/jdk/test/ProblemList.txt +++ b/jdk/test/ProblemList.txt @@ -5,9 +5,7 @@ # # This code is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. +# published by the Free Software Foundation. # # This code is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/Client.java b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/Client.java index b5eb847fc55..384a08d1772 100644 --- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/Client.java +++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/Client.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ import java.util.Collections; import java.util.HashSet; diff --git a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/ConfigKey.java b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/ConfigKey.java index 0739065744e..37adae0f72d 100644 --- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/ConfigKey.java +++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/ConfigKey.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + public enum ConfigKey { CONSTANT3, CONSTANT2; } \ No newline at end of file diff --git a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/TestNotification.java b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/TestNotification.java index aaa31a49129..f9f2832b3d7 100644 --- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/TestNotification.java +++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/TestNotification.java @@ -1,11 +1,28 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ import javax.management.Notification; -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - /** * * @author Jaroslav Bachorik diff --git a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/ConfigKey.java b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/ConfigKey.java index c79fafbba4b..3b1d1d29257 100644 --- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/ConfigKey.java +++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/ConfigKey.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + public enum ConfigKey { CONSTANT1, CONSTANT2; } \ No newline at end of file diff --git a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Server.java b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Server.java index a9254214265..c02f2f23f6d 100644 --- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Server.java +++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Server.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + import java.io.File; import java.lang.management.ManagementFactory; import java.net.BindException; diff --git a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Ste.java b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Ste.java index 91ecd00ae50..00cc1d505de 100644 --- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Ste.java +++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Ste.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ import javax.management.NotificationBroadcasterSupport; diff --git a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/SteMBean.java b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/SteMBean.java index b106bc11da7..9b2c0b1bca9 100644 --- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/SteMBean.java +++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/SteMBean.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + public interface SteMBean { public void foo(); } \ No newline at end of file diff --git a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/TestNotification.java b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/TestNotification.java index 6ffdb7f4421..6a9efd44955 100644 --- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/TestNotification.java +++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/TestNotification.java @@ -1,11 +1,28 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ import javax.management.Notification; -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - /** * * @author Jaroslav Bachorik diff --git a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/TestSerializationMismatch.java b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/TestSerializationMismatch.java index f62a6437d51..ad8009a4b07 100644 --- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/TestSerializationMismatch.java +++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/TestSerializationMismatch.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ import java.io.File; import java.lang.reflect.Method; diff --git a/jdk/test/com/sun/jndi/cosnaming/CNNameParser.java b/jdk/test/com/sun/jndi/cosnaming/CNNameParser.java index 954cc1b3fbc..fac3f77fe86 100644 --- a/jdk/test/com/sun/jndi/cosnaming/CNNameParser.java +++ b/jdk/test/com/sun/jndi/cosnaming/CNNameParser.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* @test * @bug 4238914 * @summary Tests that JNDI/COS naming parser supports the syntax diff --git a/jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java b/jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java index 0fe573c0ea3..30cb39289b2 100644 --- a/jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java +++ b/jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* @test * @bug 5042453 * @summary Ipv6 address throws Non-numeric port number error diff --git a/jdk/test/demo/zipfs/ZipFSTester.java b/jdk/test/demo/zipfs/ZipFSTester.java index c6bd389c941..6153a66032c 100644 --- a/jdk/test/demo/zipfs/ZipFSTester.java +++ b/jdk/test/demo/zipfs/ZipFSTester.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/jdk/test/java/awt/AlphaComposite/TestAlphaCompositeForNaN.java b/jdk/test/java/awt/AlphaComposite/TestAlphaCompositeForNaN.java index 2b9fb6e2f2e..77f0ba32b12 100644 --- a/jdk/test/java/awt/AlphaComposite/TestAlphaCompositeForNaN.java +++ b/jdk/test/java/awt/AlphaComposite/TestAlphaCompositeForNaN.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* * @test * @bug 6918065 diff --git a/jdk/test/java/awt/Choice/ChoiceKeyEventReaction/ChoiceKeyEventReaction.html b/jdk/test/java/awt/Choice/ChoiceKeyEventReaction/ChoiceKeyEventReaction.html index fca08218211..7c566760233 100644 --- a/jdk/test/java/awt/Choice/ChoiceKeyEventReaction/ChoiceKeyEventReaction.html +++ b/jdk/test/java/awt/Choice/ChoiceKeyEventReaction/ChoiceKeyEventReaction.html @@ -1,3 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + InputMethodsTest diff --git a/jdk/test/java/awt/JAWT/JAWT.sh b/jdk/test/java/awt/JAWT/JAWT.sh index 70ff02b8fe9..48182d437b7 100644 --- a/jdk/test/java/awt/JAWT/JAWT.sh +++ b/jdk/test/java/awt/JAWT/JAWT.sh @@ -5,9 +5,7 @@ # # This code is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. +# published by the Free Software Foundation. # # This code is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/java/awt/JAWT/Makefile.cygwin b/jdk/test/java/awt/JAWT/Makefile.cygwin index 326d58179fb..1ca22849c4e 100644 --- a/jdk/test/java/awt/JAWT/Makefile.cygwin +++ b/jdk/test/java/awt/JAWT/Makefile.cygwin @@ -3,9 +3,7 @@ # # This code is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. +# published by the Free Software Foundation. # # This code is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/java/awt/JAWT/Makefile.unix b/jdk/test/java/awt/JAWT/Makefile.unix index 2b3f47cb60f..00cf78e49f1 100644 --- a/jdk/test/java/awt/JAWT/Makefile.unix +++ b/jdk/test/java/awt/JAWT/Makefile.unix @@ -3,9 +3,7 @@ # # This code is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. +# published by the Free Software Foundation. # # This code is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/java/awt/JAWT/Makefile.win b/jdk/test/java/awt/JAWT/Makefile.win index 327fb250183..909f4f57361 100644 --- a/jdk/test/java/awt/JAWT/Makefile.win +++ b/jdk/test/java/awt/JAWT/Makefile.win @@ -3,9 +3,7 @@ # # This code is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. +# published by the Free Software Foundation. # # This code is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/java/awt/JAWT/MyCanvas.java b/jdk/test/java/awt/JAWT/MyCanvas.java index 4bf0741cb94..424e3f10c16 100644 --- a/jdk/test/java/awt/JAWT/MyCanvas.java +++ b/jdk/test/java/awt/JAWT/MyCanvas.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/java/awt/JAWT/myfile.c b/jdk/test/java/awt/JAWT/myfile.c index 1a1028965b1..890a4b5eb53 100644 --- a/jdk/test/java/awt/JAWT/myfile.c +++ b/jdk/test/java/awt/JAWT/myfile.c @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/java/awt/JAWT/myfile.cpp b/jdk/test/java/awt/JAWT/myfile.cpp index fc5b278abb4..eb8b0a777ef 100644 --- a/jdk/test/java/awt/JAWT/myfile.cpp +++ b/jdk/test/java/awt/JAWT/myfile.cpp @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java index 34b52f0bea0..eef8f3cdb18 100644 --- a/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java +++ b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* @test @bug 6741526 diff --git a/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java index f0680433644..adbafb1178b 100644 --- a/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java +++ b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* @test @bug 6741526 diff --git a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.html b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.html index c1326d3b297..f6adef40ded 100644 --- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.html +++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.html @@ -1,3 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Please run this test case under Solaris cjk locale with inputmethod support, if you could input Chinese/Japanese/Korean in the swing diff --git a/jdk/test/java/awt/image/BufferedImage/TinyScale.java b/jdk/test/java/awt/image/BufferedImage/TinyScale.java index 83a5dbcccae..e4c913e04fa 100644 --- a/jdk/test/java/awt/image/BufferedImage/TinyScale.java +++ b/jdk/test/java/awt/image/BufferedImage/TinyScale.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* * @test %W% %E% * @bug 7016495 diff --git a/jdk/test/java/awt/image/DrawImage/EABlitTest.java b/jdk/test/java/awt/image/DrawImage/EABlitTest.java index 6240ce716d6..023a2e79ec6 100644 --- a/jdk/test/java/awt/image/DrawImage/EABlitTest.java +++ b/jdk/test/java/awt/image/DrawImage/EABlitTest.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/java/awt/print/PrinterJob/CustomPrintService/PrintServiceStub.java b/jdk/test/java/awt/print/PrinterJob/CustomPrintService/PrintServiceStub.java index c430959c42b..de409b0d121 100644 --- a/jdk/test/java/awt/print/PrinterJob/CustomPrintService/PrintServiceStub.java +++ b/jdk/test/java/awt/print/PrinterJob/CustomPrintService/PrintServiceStub.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/java/awt/print/PrinterJob/CustomPrintService/SetPrintServiceTest.java b/jdk/test/java/awt/print/PrinterJob/CustomPrintService/SetPrintServiceTest.java index a6bc7ff9877..9c3ebe7d921 100644 --- a/jdk/test/java/awt/print/PrinterJob/CustomPrintService/SetPrintServiceTest.java +++ b/jdk/test/java/awt/print/PrinterJob/CustomPrintService/SetPrintServiceTest.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/java/awt/print/bug8023392/bug8023392.html b/jdk/test/java/awt/print/bug8023392/bug8023392.html index d796a21c660..af6951249c5 100644 --- a/jdk/test/java/awt/print/bug8023392/bug8023392.html +++ b/jdk/test/java/awt/print/bug8023392/bug8023392.html @@ -1,3 +1,26 @@ + + + APL diff --git a/jdk/test/javax/sound/midi/File/SMPTESequence.java b/jdk/test/javax/sound/midi/File/SMPTESequence.java index 729c7ec0618..90e92c272e0 100644 --- a/jdk/test/javax/sound/midi/File/SMPTESequence.java +++ b/jdk/test/javax/sound/midi/File/SMPTESequence.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /** * @test * @bug 6835393 diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/GetFormat.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/GetFormat.java index dd447bd0326..295936dece0 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/GetFormat.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/GetFormat.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/ToFloatArray.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/ToFloatArray.java index 62bf3677ded..ce252319ab1 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/ToFloatArray.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/ToFloatArray.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatFormatConverter/SkipTest.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatFormatConverter/SkipTest.java index 43fc8566d74..8a893c025f5 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatFormatConverter/SkipTest.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatFormatConverter/SkipTest.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Available.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Available.java index 6b1e0ab620d..961f61424be 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Available.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Available.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Close.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Close.java index a7b0fd12436..bc16d204013 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Close.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Close.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFormat.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFormat.java index 72f56563671..2e4e8023fdd 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFormat.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFormat.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFrameLength.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFrameLength.java index 4eed7f55dcc..48b2958c806 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFrameLength.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFrameLength.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/MarkSupported.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/MarkSupported.java index 107d06e0887..9107be30f5d 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/MarkSupported.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/MarkSupported.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Read.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Read.java index 0fdcfae167f..5d12feef3f2 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Read.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Read.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArray.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArray.java index 941660d76dd..7f7e4fd5a67 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArray.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArray.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArrayIntInt.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArrayIntInt.java index bc43606bcd2..44c45f3428f 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArrayIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArrayIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Reset.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Reset.java index 877a9b35279..549046648a4 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Reset.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Reset.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Skip.java b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Skip.java index f0b7c0d0068..c57994abfb9 100644 --- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Skip.java +++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Skip.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankFile.java b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankFile.java index 25cd53f121a..35986db0cee 100644 --- a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankFile.java +++ b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankFile.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream.java b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream.java index 56edf7a72f5..1e9dc8f0b72 100644 --- a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream.java +++ b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream2.java b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream2.java index e2429a6a3a2..29c8a6a4d8c 100644 --- a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream2.java +++ b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream2.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankUrl.java b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankUrl.java index 0ab06c93495..5e256adf5b1 100644 --- a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankUrl.java +++ b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankUrl.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/EmergencySoundbank/TestCreateSoundbank.java b/jdk/test/javax/sound/midi/Gervill/EmergencySoundbank/TestCreateSoundbank.java index a87989f1264..47ed64b2180 100644 --- a/jdk/test/javax/sound/midi/Gervill/EmergencySoundbank/TestCreateSoundbank.java +++ b/jdk/test/javax/sound/midi/Gervill/EmergencySoundbank/TestCreateSoundbank.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetInputStream.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetInputStream.java index 8351d26e1e1..be4460e8742 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetInputStream.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetInputStream.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetRoot.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetRoot.java index 8411d1e530f..59c98d8c76a 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetRoot.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetRoot.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Load.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Load.java index 6021b046c52..4616a6c7ae8 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Load.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Load.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/LoadAll.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/LoadAll.java index 0b960654071..bc9f1054f9b 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/LoadAll.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/LoadAll.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArray.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArray.java index 6ebcfec2c3c..f738e11c3fc 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArray.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArray.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArrayIntInt.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArrayIntInt.java index 012a683cb5e..b28fd187e43 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArrayIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArrayIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFile.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFile.java index ec231f26ddc..a97790a4970 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFile.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFile.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFileLongLong.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFileLongLong.java index 5b70b259790..622e52b2480 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFileLongLong.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFileLongLong.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Available.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Available.java index c396c242554..e205fafbd68 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Available.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Available.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Close.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Close.java index 1b660190552..a736c36f2b6 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Close.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Close.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkReset.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkReset.java index 6174ef7b817..a0db7a539c8 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkReset.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkReset.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkSupported.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkSupported.java index 489f4697def..22c87622dce 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkSupported.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkSupported.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Read.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Read.java index 3ccb38ba546..b8552dbd5e6 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Read.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Read.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByte.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByte.java index 45354d1925f..4c6cbfaa52a 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByte.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByte.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByteIntInt.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByteIntInt.java index d35ab30e576..ffcad72d048 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByteIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByteIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Skip.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Skip.java index 111139eaf8d..241dc2eab07 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Skip.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Skip.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLong.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLong.java index 3bdcb6b0597..f9953702a58 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLong.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLong.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLong.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLong.java index 1f2e2408be9..810f7381469 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLong.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLong.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLongBoolean.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLongBoolean.java index e4e4d248602..81d5943a060 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLongBoolean.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLongBoolean.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Unload.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Unload.java index 0920536ae1b..c84ac8f7df6 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Unload.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Unload.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/WriteTo.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/WriteTo.java index 8322e3ce871..b7f21de66d6 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/WriteTo.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/WriteTo.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetAttenuation.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetAttenuation.java index bd15592c690..291d056b89a 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetAttenuation.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetAttenuation.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetChannels.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetChannels.java index 3d80c81e639..8040209d8e7 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetChannels.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetChannels.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopLength.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopLength.java index c5cbab478b0..7b112f65f85 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopLength.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopLength.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopStart.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopStart.java index 6396a86d3b2..b7f8b7b8949 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopStart.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopStart.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetPitchCorrection.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetPitchCorrection.java index 5c894d234d1..9a341f672ec 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetPitchCorrection.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetPitchCorrection.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBuffer.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBuffer.java index 778c65fad28..61ab944d978 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBuffer.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBuffer.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormat.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormat.java index c10f1ce7fbd..6bc66d25675 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormat.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormat.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormatFloat.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormatFloat.java index c514574d210..93954caa535 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormatFloat.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormatFloat.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferFloat.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferFloat.java index 058386e7fa2..ca296af7596 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferFloat.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferFloat.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Open.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Open.java index cae0499ab7e..7cc92068ac8 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Open.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Open.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/OpenStream.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/OpenStream.java index d339c4c6140..1b20e5d2fcc 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/OpenStream.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/OpenStream.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Set8BitExtensionBuffer.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Set8BitExtensionBuffer.java index f2bbf7f18bf..6b7bf361582 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Set8BitExtensionBuffer.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Set8BitExtensionBuffer.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/SetLoopType.java b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/SetLoopType.java index d3cd04dded5..496b4093983 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/SetLoopType.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/SetLoopType.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestination.java b/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestination.java index 034f9a61efe..e541233367d 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestination.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestination.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestinationModelIdentifier.java b/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestinationModelIdentifier.java index 3de59e91332..3a0af9fc956 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestinationModelIdentifier.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestinationModelIdentifier.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetIdentifier.java b/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetIdentifier.java index 49330cc6dbd..30172c2d2ee 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetIdentifier.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetIdentifier.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetTransform.java b/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetTransform.java index d85f2b5db25..8105dd4457c 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetTransform.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetTransform.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/EqualsObject.java b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/EqualsObject.java index 8c4496b2a48..81b9eff7e77 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/EqualsObject.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/EqualsObject.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierString.java b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierString.java index bc0564b6872..33765d347a5 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierString.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierString.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringInt.java b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringInt.java index 713ebc768c0..152c46dfa12 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringInt.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringString.java b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringString.java index 848da91e275..d297b6034f6 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringString.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringString.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringStringInt.java b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringStringInt.java index 49c2cc90237..5400be64265 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringStringInt.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringStringInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetInstance.java b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetInstance.java index eb15aa21b31..a9c893723c3 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetInstance.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetInstance.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetObject.java b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetObject.java index 7d88fef4f04..e06c2794860 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetObject.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetObject.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetVariable.java b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetVariable.java index f120aa6c157..0871a2af304 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetVariable.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetVariable.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/GetOscillators.java b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/GetOscillators.java index 6aeb50ddd19..2923a540052 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/GetOscillators.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/GetOscillators.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetConnectionBlocks.java b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetConnectionBlocks.java index b27baa40d1d..d3936b967fe 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetConnectionBlocks.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetConnectionBlocks.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetDefaultConnectionsEnabled.java b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetDefaultConnectionsEnabled.java index 23b45434880..901ba98a246 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetDefaultConnectionsEnabled.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetDefaultConnectionsEnabled.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetExclusiveClass.java b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetExclusiveClass.java index c00229a555d..85d95cbc37d 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetExclusiveClass.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetExclusiveClass.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyFrom.java b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyFrom.java index edd56350f09..7c5e7a3d4e7 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyFrom.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyFrom.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyTo.java b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyTo.java index ff58b5adc96..ab3b052fb89 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyTo.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyTo.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetName.java b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetName.java index ed9c4513c73..012e8dfcefa 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetName.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetName.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetSelfNonExclusive.java b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetSelfNonExclusive.java index 590af2e54ff..bb045a85eca 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetSelfNonExclusive.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetSelfNonExclusive.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelFrom.java b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelFrom.java index a5ed10b62ed..9c865724c31 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelFrom.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelFrom.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelTo.java b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelTo.java index 5e60899af2f..234c23d42a5 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelTo.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelTo.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSource.java b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSource.java index da92d88a463..6c2f3b68b82 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSource.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSource.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifier.java b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifier.java index db44773e2b0..3287a690ca5 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifier.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifier.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBoolean.java b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBoolean.java index dfa21f7a5d7..88e9c70c85c 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBoolean.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBoolean.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBoolean.java b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBoolean.java index 6307a9b8af5..628e0a4a35e 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBoolean.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBoolean.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBooleanInt.java b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBooleanInt.java index b75bab51b36..9742d87d5cc 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBooleanInt.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBooleanInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierModelTransform.java b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierModelTransform.java index 3bece3264fd..f8c33db9e8e 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierModelTransform.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierModelTransform.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelSource/SetIdentifier.java b/jdk/test/javax/sound/midi/Gervill/ModelSource/SetIdentifier.java index a4202387340..5f1095af1a6 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelSource/SetIdentifier.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/SetIdentifier.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelSource/SetTransform.java b/jdk/test/javax/sound/midi/Gervill/ModelSource/SetTransform.java index 6def6a5ae5c..878ad895d8c 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelSource/SetTransform.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/SetTransform.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardIndexedDirector/ModelStandardIndexedDirectorTest.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardIndexedDirector/ModelStandardIndexedDirectorTest.java index f48b1eac2c3..ff058a11bbc 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardIndexedDirector/ModelStandardIndexedDirectorTest.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardIndexedDirector/ModelStandardIndexedDirectorTest.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransform.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransform.java index 69e03f055ae..16a410ea984 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransform.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransform.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBoolean.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBoolean.java index e44c49b2428..e77e12ca75a 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBoolean.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBoolean.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBoolean.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBoolean.java index 5b1139e40a2..e162c3bcf1f 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBoolean.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBoolean.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBooleanInt.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBooleanInt.java index 2cd0e95892c..e1ff002bc17 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBooleanInt.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBooleanInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetDirection.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetDirection.java index b66ca79e2a5..d3d1ca1df63 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetDirection.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetDirection.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetPolarity.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetPolarity.java index d7c5ec0c0a3..d711d984d3d 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetPolarity.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetPolarity.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetTransform.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetTransform.java index 9cc7d8a29cc..bb7272f7656 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetTransform.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetTransform.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformAbsolute.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformAbsolute.java index 96edd8f304e..165dccf83f4 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformAbsolute.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformAbsolute.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConcave.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConcave.java index a631ed73b9e..5a4026f2b57 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConcave.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConcave.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConvex.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConvex.java index 85fab737bab..84da289158f 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConvex.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConvex.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformLinear.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformLinear.java index 44e6c9fb875..3f82bdee5c1 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformLinear.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformLinear.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformSwitch.java b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformSwitch.java index fe990558a25..4a249783c21 100644 --- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformSwitch.java +++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformSwitch.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Available.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Available.java index 96b041602ef..d304baf39b1 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Available.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Available.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Close.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Close.java index 2d0ff96184e..dff191d66a5 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Close.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Close.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetFilePointer.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetFilePointer.java index bd1d3c81e45..11e27c17392 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetFilePointer.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetFilePointer.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetSize.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetSize.java index 2b962916957..117e00da8b0 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetSize.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetSize.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/HasNextChunk.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/HasNextChunk.java index be40f516b1e..d2738d05d7a 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/HasNextChunk.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/HasNextChunk.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Read.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Read.java index 7901f21b752..f69b9e753d4 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Read.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Read.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByte.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByte.java index ad539885a21..542d2d21751 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByte.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByte.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByteArrayIntInt.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByteArrayIntInt.java index 51a8e19c96c..1b8600dfb22 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByteArrayIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByteArrayIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadInt.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadInt.java index 05f9baee918..c03c8a6accd 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadInt.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadLong.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadLong.java index a772b4812f6..d428726cfb6 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadLong.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadLong.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadShort.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadShort.java index 4be89cbaef5..8c7977d57d3 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadShort.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadShort.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadString.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadString.java index 851b31570c2..16fcf7d26b8 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadString.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadString.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedByte.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedByte.java index 0c678b647e6..220ac748fff 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedByte.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedByte.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedInt.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedInt.java index 55ac91dd87b..253b32a7eca 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedInt.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedShort.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedShort.java index 5197957bec9..aadd38855a3 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedShort.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedShort.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Skip.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Skip.java index 48847a1cdb1..ef8997788bc 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Skip.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Skip.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/WriteOutputStream.java b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/WriteOutputStream.java index 647b7bc8321..800190a2adc 100644 --- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/WriteOutputStream.java +++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/WriteOutputStream.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankFile.java b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankFile.java index 87f95e2d8c9..12a64e659ae 100644 --- a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankFile.java +++ b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankFile.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream.java b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream.java index ebd16c737e8..ae56ddf7ade 100644 --- a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream.java +++ b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream2.java b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream2.java index b8862451147..d7852a16c5d 100644 --- a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream2.java +++ b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream2.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankUrl.java b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankUrl.java index 28c602c938c..e8bfb7a8a79 100644 --- a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankUrl.java +++ b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankUrl.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrument.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrument.java index d96afe354a7..cbe5723bbcc 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrument.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrument.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntInt.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntInt.java index 36968a8bec3..61194cd3405 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntInt.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntInt.java index aec0638d024..0cc88daa696 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntIntInt.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntIntInt.java index 1c7cd0986f6..53a852e0ac0 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformer.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformer.java index ccb94aa6733..e06f1cac147 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformer.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformer.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArray.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArray.java index a3b6c45670c..b2661eb101b 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArray.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArray.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntInt.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntInt.java index 11c146d510e..3ca515538dc 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntInt.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntInt.java index a71f95c7449..7f824b407e8 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntIntInt.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntIntInt.java index fd3154e31a7..5dbe2aa9585 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntInt.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntInt.java index 2c18e9cdb3d..e4e0e79eafd 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntInt.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntInt.java index 5b3aa6b1f05..6e5dc09d295 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntIntInt.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntIntInt.java index 4b7de7566fe..ebbf8d7b0d8 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntIntInt.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntIntInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/Clear.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/Clear.java index 1cf77dd9e59..9d02439985a 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/Clear.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/Clear.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetName.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetName.java index f3b516b7305..46065f902a5 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetName.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetName.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetPatch.java b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetPatch.java index 03698924451..4ccd828734a 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetPatch.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetPatch.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddInstrument.java b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddInstrument.java index a775bbc2781..8609e0bf0ad 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddInstrument.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddInstrument.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddResource.java b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddResource.java index f6dfcea56b4..f704eba49c5 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddResource.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddResource.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/GetInstrument.java b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/GetInstrument.java index c5e6b2efcd0..56058a7bca5 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/GetInstrument.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/GetInstrument.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/RemoveInstrument.java b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/RemoveInstrument.java index 4a6644f8d9b..1f7bdef622e 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/RemoveInstrument.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/RemoveInstrument.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetDescription.java b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetDescription.java index 2ad359f3fac..cad358e1f9c 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetDescription.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetDescription.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetName.java b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetName.java index b1ddb8cb8ed..7179f49c526 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetName.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetName.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVendor.java b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVendor.java index 3a4a18ce48b..f703f2e1683 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVendor.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVendor.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVersion.java b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVersion.java index 11c9613d062..dac2e3366dd 100644 --- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVersion.java +++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVersion.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Array.java b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Array.java index 5cd7a5cdcdb..254b09c88b4 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Array.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Array.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Clear.java b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Clear.java index 44107589ae8..fea3a484aa4 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Clear.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Clear.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Get.java b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Get.java index 0f4482a52b2..fc5cc5ec490 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Get.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Get.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/NewSoftAudioBuffer.java b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/NewSoftAudioBuffer.java index e0b63344d01..085ed077e7a 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/NewSoftAudioBuffer.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/NewSoftAudioBuffer.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/DummySourceDataLine.java b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/DummySourceDataLine.java index 4d9c0bc4b38..69d1abf5e88 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/DummySourceDataLine.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/DummySourceDataLine.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetFormat.java b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetFormat.java index c066f0471f1..4dc0c3b1c16 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetFormat.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetFormat.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetPropertyInfo.java b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetPropertyInfo.java index aa1ea2b25b7..217760e18a3 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetPropertyInfo.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetPropertyInfo.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java index 9b4bf649f45..1701232bbd7 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/OpenStream.java b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/OpenStream.java index 7d9e2c56f3d..24aad6c64df 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/OpenStream.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/OpenStream.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllNotesOff.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllNotesOff.java index 7e656df9b06..312d1defb8c 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllNotesOff.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllNotesOff.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllSoundOff.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllSoundOff.java index 3444242a687..8048363a5f1 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllSoundOff.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllSoundOff.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ChannelPressure.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ChannelPressure.java index b9af793d42a..c525777ef28 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ChannelPressure.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ChannelPressure.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Controller.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Controller.java index 588679ab8d7..e9d71302a1e 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Controller.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Controller.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/LocalControl.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/LocalControl.java index 6854663dfd1..b50da281449 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/LocalControl.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/LocalControl.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mono.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mono.java index 54aba6eace2..20fadd9a14e 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mono.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mono.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mute.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mute.java index badefd7da87..c699a0352aa 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mute.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mute.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff.java index adb8cb9c811..4b74e6bcdc5 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff2.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff2.java index 015178b34c0..48fc37e46f4 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff2.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff2.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOn.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOn.java index 970c00c5763..3cfb55c0ae4 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOn.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOn.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest.java index 392dde27294..78b726806de 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest2.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest2.java index af65174cdc9..fad50bdc739 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest2.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest2.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Omni.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Omni.java index 0247b6e9aa6..963dbfe6025 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Omni.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Omni.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/PitchBend.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/PitchBend.java index 71d39b6663e..46f3e7cb4fb 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/PitchBend.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/PitchBend.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/PolyPressure.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/PolyPressure.java index 72c7bfa7afa..fff782f68fb 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/PolyPressure.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/PolyPressure.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramAndBankChange.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramAndBankChange.java index 68f8f198af5..80d0bd82de7 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramAndBankChange.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramAndBankChange.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramChange.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramChange.java index 29f56cb7661..25040a5efde 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramChange.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramChange.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ResetAllControllers.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ResetAllControllers.java index 28071e4b40f..b2d735fbd4d 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ResetAllControllers.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ResetAllControllers.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/SoftTestUtils.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/SoftTestUtils.java index 2e473793519..054e2c10724 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/SoftTestUtils.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/SoftTestUtils.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Solo.java b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Solo.java index c3776bbc6b7..d4951fbf27a 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Solo.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Solo.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftCubicResampler/Interpolate.java b/jdk/test/javax/sound/midi/Gervill/SoftCubicResampler/Interpolate.java index 7f34b003863..42737ad9c48 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftCubicResampler/Interpolate.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftCubicResampler/Interpolate.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftFilter/TestProcessAudio.java b/jdk/test/javax/sound/midi/Gervill/SoftFilter/TestProcessAudio.java index 24a8600f058..d38686e960b 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftFilter/TestProcessAudio.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftFilter/TestProcessAudio.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLanczosResampler/Interpolate.java b/jdk/test/javax/sound/midi/Gervill/SoftLanczosResampler/Interpolate.java index c925c8a7fdf..4b608207eba 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLanczosResampler/Interpolate.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLanczosResampler/Interpolate.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix.java b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix.java index 499132a807e..341d7f324ca 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono.java b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono.java index eec1f037c48..91f2384d286 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono_overdrive.java b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono_overdrive.java index 946a14c07f2..c32d06e64bb 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono_overdrive.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono_overdrive.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_overdrive.java b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_overdrive.java index a605678e06c..b97151e29ed 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_overdrive.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_overdrive.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal.java b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal.java index cc96a639666..7292ddbbe6c 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal_mono.java b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal_mono.java index ad80e8e03d3..61e2c017fc5 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal_mono.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal_mono.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive.java b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive.java index 76951b797a5..82f8d616c67 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive_mono.java b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive_mono.java index 4a6646d8d85..b3eb680507a 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive_mono.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive_mono.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler/Interpolate.java b/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler/Interpolate.java index e8b1c75f50c..a36a0ea073c 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler/Interpolate.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler/Interpolate.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler2/Interpolate.java b/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler2/Interpolate.java index 13f84ea7881..3477dbc0b9a 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler2/Interpolate.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler2/Interpolate.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftLowFrequencyOscillator/TestProcessControlLogic.java b/jdk/test/javax/sound/midi/Gervill/SoftLowFrequencyOscillator/TestProcessControlLogic.java index bfa907bc05c..f445c181ff1 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftLowFrequencyOscillator/TestProcessControlLogic.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftLowFrequencyOscillator/TestProcessControlLogic.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftPointResampler/Interpolate.java b/jdk/test/javax/sound/midi/Gervill/SoftPointResampler/Interpolate.java index e99c6132210..ccd87a46b6e 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftPointResampler/Interpolate.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftPointResampler/Interpolate.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftProvider/GetDevice.java b/jdk/test/javax/sound/midi/Gervill/SoftProvider/GetDevice.java index 1203ba500ac..fa38b029f80 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftProvider/GetDevice.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftProvider/GetDevice.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Close.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Close.java index 9c84f91666c..15bb6aa9347 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Close.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Close.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/GetMidiDevice.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/GetMidiDevice.java index 7fe77c6e989..53a0a650e82 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/GetMidiDevice.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/GetMidiDevice.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ActiveSense.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ActiveSense.java index 4d06db7313a..64e4e4ac546 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ActiveSense.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ActiveSense.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllNotesOff.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllNotesOff.java index c96148e16ed..fe618e3d5c6 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllNotesOff.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllNotesOff.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllSoundOff.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllSoundOff.java index 693522aa582..9d43ddf502b 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllSoundOff.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllSoundOff.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ChannelPressure.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ChannelPressure.java index 1a1b60369ae..3b49de04549 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ChannelPressure.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ChannelPressure.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Controller.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Controller.java index 1d07c05c0da..451a020b444 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Controller.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Controller.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Mono.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Mono.java index 085dafbf192..52bd68d5f79 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Mono.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Mono.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOff.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOff.java index 18f6cc806e8..f89ca351630 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOff.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOff.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn.java index 6599bc3e125..0cc746ebd29 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_AllChannels.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_AllChannels.java index adce7a84602..4114e01ee99 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_AllChannels.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_AllChannels.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Delayed.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Delayed.java index fc2cfcd4c67..24a98da89b0 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Delayed.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Delayed.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Multiple.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Multiple.java index 1664de68fff..af6b1b69ade 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Multiple.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Multiple.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Omni.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Omni.java index 7cee5c3c20a..6d905e5c005 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Omni.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Omni.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PitchBend.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PitchBend.java index c3101110391..dc49c2dc32b 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PitchBend.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PitchBend.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PolyPressure.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PolyPressure.java index 766dc2841f2..2a7e4b7ccda 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PolyPressure.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PolyPressure.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ProgramChange.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ProgramChange.java index 2bc5e607a54..3db7533a766 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ProgramChange.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ProgramChange.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ResetAllControllers.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ResetAllControllers.java index 8266af5a042..4fd3180ec18 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ResetAllControllers.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ResetAllControllers.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/SoftTestUtils.java b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/SoftTestUtils.java index 2e473793519..054e2c10724 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/SoftTestUtils.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/SoftTestUtils.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSincResampler/Interpolate.java b/jdk/test/javax/sound/midi/Gervill/SoftSincResampler/Interpolate.java index 0232e1c8978..c5215dd3d6b 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSincResampler/Interpolate.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSincResampler/Interpolate.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Close.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Close.java index 3f3e04d8a56..8922854cbfa 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Close.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Close.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/DummySourceDataLine.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/DummySourceDataLine.java index 4d9c0bc4b38..69d1abf5e88 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/DummySourceDataLine.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/DummySourceDataLine.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments.java index 1c92123454f..7d02b5cd372 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments2.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments2.java index 20e2360a74e..ebe4569790c 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments2.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments2.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetChannels.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetChannels.java index c25a916076c..7f5b9ffe979 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetChannels.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetChannels.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDefaultSoundbank.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDefaultSoundbank.java index 719f8886657..413d4551b91 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDefaultSoundbank.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDefaultSoundbank.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDeviceInfo.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDeviceInfo.java index 0755cb2780b..90fde5a335f 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDeviceInfo.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDeviceInfo.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java index 40e0218563f..fa02ee34103 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments.java index 28c2e64be33..17af001db19 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments2.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments2.java index 5fa3fb21d86..9a06b3322f9 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments2.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments2.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxPolyphony.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxPolyphony.java index e72168c615d..35b5e217e52 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxPolyphony.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxPolyphony.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxReceivers.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxReceivers.java index 9b85c07a8c1..6d314f93af3 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxReceivers.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxReceivers.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxTransmitters.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxTransmitters.java index 3865547ce2b..2cfa8997383 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxTransmitters.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxTransmitters.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMicrosecondPosition.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMicrosecondPosition.java index 83049993f0f..7d271fdda78 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMicrosecondPosition.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMicrosecondPosition.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetPropertyInfo.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetPropertyInfo.java index 43c5438bfdd..66f773429d5 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetPropertyInfo.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetPropertyInfo.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java index 7959c19b572..f22af997d23 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java index 09db467ef0e..28c28924f8a 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java index 67927515cd8..c1c9fcce242 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java index 58dc0002fd3..70e5b6729a8 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java index c765087e6c2..18fbf7567d6 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetVoiceStatus.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetVoiceStatus.java index b26922ff0c8..9dddc7ec472 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetVoiceStatus.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetVoiceStatus.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java index 4c6d7d82305..421c62938e6 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsOpen.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsOpen.java index 3b143f6f531..c14be6b6697 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsOpen.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsOpen.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsSoundbankSupported.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsSoundbankSupported.java index 3b73df39f4b..a26f8480abb 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsSoundbankSupported.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsSoundbankSupported.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadAllInstruments.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadAllInstruments.java index 0e67c614e5b..0240ef99594 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadAllInstruments.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadAllInstruments.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstrument.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstrument.java index 9333b36bdf8..3b7e9683bd7 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstrument.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstrument.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstruments.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstruments.java index a86f3955dd7..685e53fc212 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstruments.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstruments.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Open.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Open.java index 610ce7d278d..6724a3c7c09 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Open.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Open.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/OpenStream.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/OpenStream.java index 83df50d97db..b10bbc27bbb 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/OpenStream.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/OpenStream.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/RemapInstrument.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/RemapInstrument.java index 64baf2d3f38..c4f08b34b90 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/RemapInstrument.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/RemapInstrument.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestDisableLoadDefaultSoundbank.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestDisableLoadDefaultSoundbank.java index 06c39995398..23b9a696fa3 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestDisableLoadDefaultSoundbank.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestDisableLoadDefaultSoundbank.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestPreciseTimestampRendering.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestPreciseTimestampRendering.java index 26e3e956df1..eee0267fed9 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestPreciseTimestampRendering.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestPreciseTimestampRendering.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestRender1.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestRender1.java index 6ebb9af4752..d7af4bf620b 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestRender1.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestRender1.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadAllInstruments.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadAllInstruments.java index 70414a251ac..5efdaaf7643 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadAllInstruments.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadAllInstruments.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstrument.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstrument.java index 3a3861cddcd..7f8df6c6338 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstrument.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstrument.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstruments.java b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstruments.java index b34e45a7192..b2b89d8e6f8 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstruments.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstruments.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetName.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetName.java index ccfcd96f5c0..cb76ccdc182 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetName.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetName.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuning.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuning.java index 0432f391faa..41bdd579a04 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuning.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuning.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuningInt.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuningInt.java index a6f7bc1e5ca..13759f2c3b9 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuningInt.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuningInt.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load1.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load1.java index ebfd1a18a84..5b5fa3b2e8b 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load1.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load1.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load2.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load2.java index f424df62d4c..58e23103014 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load2.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load2.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load4.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load4.java index 7804217adf3..41c194cefdf 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load4.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load4.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load5.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load5.java index c094a145a11..7132a39a7a7 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load5.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load5.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load6.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load6.java index 07ac751b5b7..b53d3a4f835 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load6.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load6.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load7.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load7.java index 4d2cae09ebe..ca90d364072 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load7.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load7.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load8.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load8.java index 0b12b15fa02..731eac0cde3 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load8.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load8.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load9.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load9.java index 1594b33c418..cdbb9e2d31b 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load9.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load9.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuning.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuning.java index ba49c1865f1..4b9f0c7dbd6 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuning.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuning.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningByteArray.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningByteArray.java index c8a2bf668a2..b13fff484a4 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningByteArray.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningByteArray.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatch.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatch.java index 8363279a9e5..8fd023fe533 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatch.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatch.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatchByteArray.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatchByteArray.java index 150906240f3..0ae5bc72fef 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatchByteArray.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatchByteArray.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Gervill/SoftTuning/RealTimeTuning.java b/jdk/test/javax/sound/midi/Gervill/SoftTuning/RealTimeTuning.java index 7b6aaf66d82..df6a7faa235 100644 --- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/RealTimeTuning.java +++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/RealTimeTuning.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/MidiDeviceConnectors/TestAllDevices.java b/jdk/test/javax/sound/midi/MidiDeviceConnectors/TestAllDevices.java index fa1d964e1df..9155dbb6b32 100644 --- a/jdk/test/javax/sound/midi/MidiDeviceConnectors/TestAllDevices.java +++ b/jdk/test/javax/sound/midi/MidiDeviceConnectors/TestAllDevices.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/midi/Sequencer/SequencerImplicitSynthOpen.java b/jdk/test/javax/sound/midi/Sequencer/SequencerImplicitSynthOpen.java index f305d331bbc..2b7dc16ea1c 100644 --- a/jdk/test/javax/sound/midi/Sequencer/SequencerImplicitSynthOpen.java +++ b/jdk/test/javax/sound/midi/Sequencer/SequencerImplicitSynthOpen.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /** * @test * @bug 6660470 diff --git a/jdk/test/javax/sound/sampled/AudioFormat/Matches_NOT_SPECIFIED.java b/jdk/test/javax/sound/sampled/AudioFormat/Matches_NOT_SPECIFIED.java index 18e53af2d27..98fdce11072 100644 --- a/jdk/test/javax/sound/sampled/AudioFormat/Matches_NOT_SPECIFIED.java +++ b/jdk/test/javax/sound/sampled/AudioFormat/Matches_NOT_SPECIFIED.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/sampled/AudioFormat/PCM_FLOAT_support.java b/jdk/test/javax/sound/sampled/AudioFormat/PCM_FLOAT_support.java index 637a15354bf..43d39fb8ead 100644 --- a/jdk/test/javax/sound/sampled/AudioFormat/PCM_FLOAT_support.java +++ b/jdk/test/javax/sound/sampled/AudioFormat/PCM_FLOAT_support.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/sampled/Clip/ClipSetPos.java b/jdk/test/javax/sound/sampled/Clip/ClipSetPos.java index 715274fe65f..c98032422e2 100644 --- a/jdk/test/javax/sound/sampled/Clip/ClipSetPos.java +++ b/jdk/test/javax/sound/sampled/Clip/ClipSetPos.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/sampled/DataLine/DataLine_ArrayIndexOutOfBounds.java b/jdk/test/javax/sound/sampled/DataLine/DataLine_ArrayIndexOutOfBounds.java index e8dac311ee1..484bf29aefb 100644 --- a/jdk/test/javax/sound/sampled/DataLine/DataLine_ArrayIndexOutOfBounds.java +++ b/jdk/test/javax/sound/sampled/DataLine/DataLine_ArrayIndexOutOfBounds.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /** * @test * @bug 7088367 diff --git a/jdk/test/javax/sound/sampled/DirectAudio/bug6400879.java b/jdk/test/javax/sound/sampled/DirectAudio/bug6400879.java index 6045d41e20e..033015062d1 100644 --- a/jdk/test/javax/sound/sampled/DirectAudio/bug6400879.java +++ b/jdk/test/javax/sound/sampled/DirectAudio/bug6400879.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/sampled/FileWriter/AlawEncoderSync.java b/jdk/test/javax/sound/sampled/FileWriter/AlawEncoderSync.java index a58fa269f69..b207e0b5898 100644 --- a/jdk/test/javax/sound/sampled/FileWriter/AlawEncoderSync.java +++ b/jdk/test/javax/sound/sampled/FileWriter/AlawEncoderSync.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/sound/sampled/FileWriter/WriterCloseInput.java b/jdk/test/javax/sound/sampled/FileWriter/WriterCloseInput.java index b4197892ea8..d54c8f57d90 100644 --- a/jdk/test/javax/sound/sampled/FileWriter/WriterCloseInput.java +++ b/jdk/test/javax/sound/sampled/FileWriter/WriterCloseInput.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /** * @test * @bug 7013521 diff --git a/jdk/test/javax/swing/JCheckBox/4449413/bug4449413.html b/jdk/test/javax/swing/JCheckBox/4449413/bug4449413.html index cec2ce04678..1bfa618f77f 100644 --- a/jdk/test/javax/swing/JCheckBox/4449413/bug4449413.html +++ b/jdk/test/javax/swing/JCheckBox/4449413/bug4449413.html @@ -1,3 +1,26 @@ + + When the applet starts, you'll see eight controls with black backgrounds. diff --git a/jdk/test/javax/swing/JColorChooser/Test4222508.html b/jdk/test/javax/swing/JColorChooser/Test4222508.html index 4614fb7de47..edbc46666fa 100644 --- a/jdk/test/javax/swing/JColorChooser/Test4222508.html +++ b/jdk/test/javax/swing/JColorChooser/Test4222508.html @@ -1,3 +1,26 @@ + + Use the check box above the color chooser to disable it. diff --git a/jdk/test/javax/swing/JColorChooser/Test4759306.html b/jdk/test/javax/swing/JColorChooser/Test4759306.html index 8a4d53f00e9..670ff449e28 100644 --- a/jdk/test/javax/swing/JColorChooser/Test4759306.html +++ b/jdk/test/javax/swing/JColorChooser/Test4759306.html @@ -1,3 +1,26 @@ + + If you see the preview panel, then test failed, otherwise it passed. diff --git a/jdk/test/javax/swing/JColorChooser/Test4759934.html b/jdk/test/javax/swing/JColorChooser/Test4759934.html index 0441b67ac66..0ffc3a19ee6 100644 --- a/jdk/test/javax/swing/JColorChooser/Test4759934.html +++ b/jdk/test/javax/swing/JColorChooser/Test4759934.html @@ -1,3 +1,26 @@ + + 1. Press button "Show Dialog" at the frame "Test" and diff --git a/jdk/test/javax/swing/JColorChooser/Test4887836.html b/jdk/test/javax/swing/JColorChooser/Test4887836.html index 324d5afe368..af623a59fb3 100644 --- a/jdk/test/javax/swing/JColorChooser/Test4887836.html +++ b/jdk/test/javax/swing/JColorChooser/Test4887836.html @@ -1,3 +1,26 @@ + + If you do not see white area under swatches, diff --git a/jdk/test/javax/swing/JColorChooser/Test6348456.html b/jdk/test/javax/swing/JColorChooser/Test6348456.html index 6829c7810c4..c3b5989b416 100644 --- a/jdk/test/javax/swing/JColorChooser/Test6348456.html +++ b/jdk/test/javax/swing/JColorChooser/Test6348456.html @@ -1,3 +1,26 @@ + + When applet starts, you'll see that the preview is white. diff --git a/jdk/test/javax/swing/JColorChooser/Test6977726.html b/jdk/test/javax/swing/JColorChooser/Test6977726.html index 3b7f33d206b..cfe132aff13 100644 --- a/jdk/test/javax/swing/JColorChooser/Test6977726.html +++ b/jdk/test/javax/swing/JColorChooser/Test6977726.html @@ -1,3 +1,26 @@ + + If you don't see the preview panel, then test failed, otherwise it passed. diff --git a/jdk/test/javax/swing/JComponent/4337267/bug4337267.java b/jdk/test/javax/swing/JComponent/4337267/bug4337267.java index a3e3f24b0ad..1a16be2cd09 100644 --- a/jdk/test/javax/swing/JComponent/4337267/bug4337267.java +++ b/jdk/test/javax/swing/JComponent/4337267/bug4337267.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* * @test * @bug 4337267 diff --git a/jdk/test/javax/swing/JComponent/6683775/bug6683775.java b/jdk/test/javax/swing/JComponent/6683775/bug6683775.java index 02cd32b6524..cb41f7be534 100644 --- a/jdk/test/javax/swing/JComponent/6683775/bug6683775.java +++ b/jdk/test/javax/swing/JComponent/6683775/bug6683775.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* @test @bug 6683775 6794764 @summary Painting artifacts is seen when panel is made setOpaque(false) for a translucent window diff --git a/jdk/test/javax/swing/JEditorPane/4492274/test.html b/jdk/test/javax/swing/JEditorPane/4492274/test.html index 2186cc326c8..93d04b453e2 100644 --- a/jdk/test/javax/swing/JEditorPane/4492274/test.html +++ b/jdk/test/javax/swing/JEditorPane/4492274/test.html @@ -1,3 +1,26 @@ + + top diff --git a/jdk/test/javax/swing/JEditorPane/6917744/test.html b/jdk/test/javax/swing/JEditorPane/6917744/test.html index 7532c9e9e15..4554b5e37c2 100644 --- a/jdk/test/javax/swing/JEditorPane/6917744/test.html +++ b/jdk/test/javax/swing/JEditorPane/6917744/test.html @@ -1,3 +1,26 @@ + + diff --git a/jdk/test/javax/swing/JEditorPane/bug4714674.java b/jdk/test/javax/swing/JEditorPane/bug4714674.java index a3426144330..5b59833826f 100644 --- a/jdk/test/javax/swing/JEditorPane/bug4714674.java +++ b/jdk/test/javax/swing/JEditorPane/bug4714674.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* @test @bug 4714674 @summary Tests that JEditorPane opens HTTP connection asynchronously diff --git a/jdk/test/javax/swing/JFileChooser/6570445/bug6570445.java b/jdk/test/javax/swing/JFileChooser/6570445/bug6570445.java index f746edaee54..968c3723430 100644 --- a/jdk/test/javax/swing/JFileChooser/6570445/bug6570445.java +++ b/jdk/test/javax/swing/JFileChooser/6570445/bug6570445.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* * @test * @bug 6570445 diff --git a/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.html b/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.html index 8de6fdd0792..489078715c1 100644 --- a/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.html +++ b/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.html @@ -1,3 +1,26 @@ + + diff --git a/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.java b/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.java index ede1533746d..ecabb8f3696 100644 --- a/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.java +++ b/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* @test %W% %E% @bug 6698013 @summary JFileChooser can no longer navigate non-local file systems. diff --git a/jdk/test/javax/swing/JFileChooser/6798062/bug6798062.html b/jdk/test/javax/swing/JFileChooser/6798062/bug6798062.html index 80a3e1c503d..4ba1a838431 100644 --- a/jdk/test/javax/swing/JFileChooser/6798062/bug6798062.html +++ b/jdk/test/javax/swing/JFileChooser/6798062/bug6798062.html @@ -1,3 +1,26 @@ + + diff --git a/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.html b/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.html index 7412f74ed7e..4d822df013c 100644 --- a/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.html +++ b/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.html @@ -1,3 +1,26 @@ + + diff --git a/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.java b/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.java index 24b3b4da074..ce9df572edc 100644 --- a/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.java +++ b/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.java @@ -1,3 +1,26 @@ +/* + * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + /* @test @bug 6726866 @summary Repainting artifacts when resizing or dragging JInternalFrames in non-opaque toplevel diff --git a/jdk/test/javax/swing/JSlider/4987336/bug4987336.html b/jdk/test/javax/swing/JSlider/4987336/bug4987336.html index b5c9a191f56..a454ae0a273 100644 --- a/jdk/test/javax/swing/JSlider/4987336/bug4987336.html +++ b/jdk/test/javax/swing/JSlider/4987336/bug4987336.html @@ -1,3 +1,26 @@ + + diff --git a/jdk/test/javax/swing/JSlider/6524424/bug6524424.html b/jdk/test/javax/swing/JSlider/6524424/bug6524424.html index ecf8f65df04..a9deef283dd 100644 --- a/jdk/test/javax/swing/JSlider/6524424/bug6524424.html +++ b/jdk/test/javax/swing/JSlider/6524424/bug6524424.html @@ -1,3 +1,26 @@ + + diff --git a/jdk/test/javax/swing/JSlider/6587742/bug6587742.html b/jdk/test/javax/swing/JSlider/6587742/bug6587742.html index ceda9f921c7..694ac88baa7 100644 --- a/jdk/test/javax/swing/JSlider/6587742/bug6587742.html +++ b/jdk/test/javax/swing/JSlider/6587742/bug6587742.html @@ -1,3 +1,26 @@ + + diff --git a/jdk/test/javax/swing/JSlider/6742358/bug6742358.html b/jdk/test/javax/swing/JSlider/6742358/bug6742358.html index d004e116c93..3cace4a1143 100644 --- a/jdk/test/javax/swing/JSlider/6742358/bug6742358.html +++ b/jdk/test/javax/swing/JSlider/6742358/bug6742358.html @@ -1,3 +1,26 @@ + + diff --git a/jdk/test/javax/swing/JTabbedPane/4310381/bug4310381.html b/jdk/test/javax/swing/JTabbedPane/4310381/bug4310381.html index d60643e56e4..325bbfdca5d 100644 --- a/jdk/test/javax/swing/JTabbedPane/4310381/bug4310381.html +++ b/jdk/test/javax/swing/JTabbedPane/4310381/bug4310381.html @@ -1,3 +1,26 @@ + + diff --git a/jdk/test/javax/swing/JTree/4314199/bug4314199.html b/jdk/test/javax/swing/JTree/4314199/bug4314199.html index b1fb60e4896..94249fa3d1d 100644 --- a/jdk/test/javax/swing/JTree/4314199/bug4314199.html +++ b/jdk/test/javax/swing/JTree/4314199/bug4314199.html @@ -1,3 +1,26 @@ + + Select the last tree node (marked "Here") and click on the menu. diff --git a/jdk/test/javax/swing/SwingUtilities/7170657/bug7170657.java b/jdk/test/javax/swing/SwingUtilities/7170657/bug7170657.java index e28ce7ab9b9..8197b7fcb6a 100644 --- a/jdk/test/javax/swing/SwingUtilities/7170657/bug7170657.java +++ b/jdk/test/javax/swing/SwingUtilities/7170657/bug7170657.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/swing/border/Test4129681.html b/jdk/test/javax/swing/border/Test4129681.html index 4985c4de979..4eee263c83c 100644 --- a/jdk/test/javax/swing/border/Test4129681.html +++ b/jdk/test/javax/swing/border/Test4129681.html @@ -1,3 +1,26 @@ + + When applet starts, you'll see a checkbox and a label with a titled border. diff --git a/jdk/test/javax/swing/border/Test4243289.html b/jdk/test/javax/swing/border/Test4243289.html index 9133d99c582..6aac9af7779 100644 --- a/jdk/test/javax/swing/border/Test4243289.html +++ b/jdk/test/javax/swing/border/Test4243289.html @@ -1,3 +1,26 @@ + + When applet starts, you'll see a panel with a TitledBorder with title "Panel Title". diff --git a/jdk/test/javax/swing/border/Test4247606.html b/jdk/test/javax/swing/border/Test4247606.html index d501ab221d6..7091e2f2020 100644 --- a/jdk/test/javax/swing/border/Test4247606.html +++ b/jdk/test/javax/swing/border/Test4247606.html @@ -1,3 +1,26 @@ + + If the button do not fit into the titled border bounds diff --git a/jdk/test/javax/swing/border/Test4252164.html b/jdk/test/javax/swing/border/Test4252164.html index eb436c53fe3..1a9c1c52921 100644 --- a/jdk/test/javax/swing/border/Test4252164.html +++ b/jdk/test/javax/swing/border/Test4252164.html @@ -1,3 +1,26 @@ + + Please, ensure that rounded border is filled completely. diff --git a/jdk/test/javax/swing/border/Test4760089.html b/jdk/test/javax/swing/border/Test4760089.html index 6963333627e..88441b9e14d 100644 --- a/jdk/test/javax/swing/border/Test4760089.html +++ b/jdk/test/javax/swing/border/Test4760089.html @@ -1,3 +1,26 @@ + + When applet starts, you'll see a panel with a compound titled border. diff --git a/jdk/test/javax/swing/border/Test6910490.html b/jdk/test/javax/swing/border/Test6910490.html index 4358cf471f9..019f975a5fd 100644 --- a/jdk/test/javax/swing/border/Test6910490.html +++ b/jdk/test/javax/swing/border/Test6910490.html @@ -1,3 +1,26 @@ + + If the border is painted over scroll bars then test fails. diff --git a/jdk/test/javax/swing/border/Test7022041.java b/jdk/test/javax/swing/border/Test7022041.java index 1a8b12c7c7a..747c1117ee6 100644 --- a/jdk/test/javax/swing/border/Test7022041.java +++ b/jdk/test/javax/swing/border/Test7022041.java @@ -4,9 +4,7 @@ * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. + * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or diff --git a/jdk/test/javax/swing/text/html/TableView/7030332/bug7030332.html b/jdk/test/javax/swing/text/html/TableView/7030332/bug7030332.html index 9a62f793008..cceb31c9088 100644 --- a/jdk/test/javax/swing/text/html/TableView/7030332/bug7030332.html +++ b/jdk/test/javax/swing/text/html/TableView/7030332/bug7030332.html @@ -1,3 +1,26 @@ + + diff --git a/jdk/test/sun/java2d/cmm/ColorConvertOp/ConstructorsNullTest/ConstructorsNullTest.html b/jdk/test/sun/java2d/cmm/ColorConvertOp/ConstructorsNullTest/ConstructorsNullTest.html index 88f81f1e9e2..e874bad4607 100644 --- a/jdk/test/sun/java2d/cmm/ColorConvertOp/ConstructorsNullTest/ConstructorsNullTest.html +++ b/jdk/test/sun/java2d/cmm/ColorConvertOp/ConstructorsNullTest/ConstructorsNullTest.html @@ -1,3 +1,26 @@ + + \fR\&. +.TP +-nocomment +.br +Suppresses the entire comment body, including the main description and all tags, and generate only declarations\&. This option lets you reuse source files that were originally intended for a different purpose so that you can produce skeleton HTML documentation at the early stages of a new project\&. +.TP +-sourcetab \fItablength\fR +.br +Specifies the number of spaces each tab uses in the source\&. +.SH COMMAND-LINE\ ARGUMENT\ FILES +To shorten or simplify the \f3javadoc\fR command, you can specify one or more files that contain arguments to the \f3javadoc\fR command (except \f3-J\fR options)\&. This enables you to create \f3javadoc\fR commands of any length on any operating system\&. +.PP +An argument file can include \f3javac\fR options and source file names in any combination\&. The arguments within a file can be space-separated or newline-separated\&. If a file name contains embedded spaces, then put the whole file name in double quotation marks\&. +.PP +File Names within an argument file are relative to the current directory, not the location of the argument file\&. Wild cards (\f3*\fR) are not allowed in these lists (such as for specifying *\&.java)\&. Using the at sign (@) to recursively interpret files is not supported\&. The \f3-J\fR options are not supported because they are passed to the launcher, which does not support argument files\&. +.PP +When you run the \f3javadoc\fR command, pass in the path and name of each argument file with the @ leading character\&. When the \f3javadoc\fR command encounters an argument beginning with the at sign (@), it expands the contents of that file into the argument list\&. +.PP +\f3Example 1 Single Argument File\fR +.PP +You could use a single argument file named \f3argfile\fR to hold all \f3javadoc\fR command arguments: \f3javadoc @argfile\fR\&. The argument file \f3\fRcontains the contents of both files, as shown in the next example\&. +.PP +\f3Example 2 Two Argument Files\fR +.PP +You can create two argument files: One for the \f3javadoc\fR command options and the other for the package names or source file names\&. Notice the following lists have no line-continuation characters\&. +.PP +Create a file named options that contains: +.sp +.nf +\f3\-d docs\-filelist \fP +.fi +.nf +\f3\-use \fP +.fi +.nf +\f3\-splitindex\fP +.fi +.nf +\f3\-windowtitle \&'Java SE 7 API Specification\&'\fP +.fi +.nf +\f3\-doctitle \&'Java SE 7 API Specification\&'\fP +.fi +.nf +\f3\-header \&'Java\(tm SE 7\&'\fP +.fi +.nf +\f3\-bottom \&'Copyright © 1993\-2011 Oracle and/or its affiliates\&. All rights reserved\&.\&'\fP +.fi +.nf +\f3\-group "Core Packages" "java\&.*"\fP +.fi +.nf +\f3\-overview /java/pubs/ws/1\&.7\&.0/src/share/classes/overview\-core\&.html\fP +.fi +.nf +\f3\-sourcepath /java/pubs/ws/1\&.7\&.0/src/share/classes\fP +.fi +.nf +\f3\fR +.fi +.sp +Create a file named packages that contains: +.sp +.nf +\f3com\&.mypackage1\fP +.fi +.nf +\f3com\&.mypackage2\fP +.fi +.nf +\f3com\&.mypackage3\fP +.fi +.nf +\f3\fR +.fi +.sp +Run the \f3javadoc\fR command as follows: +.sp +.nf +\f3javadoc @options @packages\fP +.fi +.nf +\f3\fR +.fi +.sp +\f3Example 3 Argument Files with Paths\fR +.PP +The argument files can have paths, but any file names inside the files are relative to the current working directory (not \f3path1\fR or \f3path2\fR): +.sp +.nf +\f3javadoc @path1/options @path2/packages\fP +.fi +.nf +\f3\fR +.fi +.sp +\f3Example 4 Option Arguments\fR +.PP +The following example saves an argument to a \f3javadoc\fR command option in an argument file\&. The \f3-bottom\fR option is used because it can have a lengthy argument\&. You could create a file named bottom to contain the text argument: +.sp +.nf +\f3\fP +.fi +.nf +\f3 Submit a bug or feature
      \fP +.fi +.nf +\f3 Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&.
      \fP +.fi +.nf +\f3 Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&.\fP +.fi +.nf +\f3 Other names may be trademarks of their respective owners\&.
      \fP +.fi +.nf +\f3\fR +.fi +.sp +Run the \f3javadoc\fR command as follows:\f3javadoc -bottom @bottom @packages\fR\&. +.PP +You can also include the \f3-bottom\fR option at the start of the argument file and run the \f3javadoc\fR command as follows: \f3javadoc @bottom @packages\fR\&. +.SH RUNNING\ THE\ JAVADOC\ COMMAND +The release number of the \f3javadoc\fR command can be determined with the \f3javadoc -J-version\fR option\&. The release number of the standard doclet appears in the output stream\&. It can be turned off with the \f3-quiet\fR option\&. +.PP +Use the public programmatic interface to call the \f3javadoc\fR command from within programs written in the Java language\&. This interface is in \f3com\&.sun\&.tools\&.javadoc\&.Main\fR (and the \f3javadoc\fR command is reentrant)\&. For more information, see The Standard Doclet at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/standard-doclet\&.html#runningprogrammatically +.PP +The following instructions call the standard HTML doclet\&. To call a custom doclet, use the \f3-doclet\fR and \f3-docletpath\fR options\&. See Doclet Overview at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/doclet/overview\&.html +.SS SIMPLE\ EXAMPLES +You can run the \f3javadoc\fR command on entire packages or individual source files\&. Each package name has a corresponding directory name\&. +.PP +In the following examples, the source files are located at /home/src/java/awt/*\&.java\&. The destination directory is /home/html\&. +.PP +Document One or More Packages + +To document a package, the source files for that package must be located in a directory that has the same name as the package\&. +.PP +If a package name has several identifiers (separated by dots, such as \f3java\&.awt\&.color\fR), then each subsequent identifier must correspond to a deeper subdirectory (such as java/awt/color)\&. +.PP +You can split the source files for a single package among two such directory trees located at different places, as long as \f3-sourcepath\fR points to them both\&. For example, src1/java/awt/color and src2/java/awt/color\&. +.PP +You can run the \f3javadoc\fR command either by changing directories (with the \f3cd\fR command) or by using the \f3-sourcepath\fR option\&. The following examples illustrate both alternatives\&. +.PP +\f3Example 1 Recursive Run from One or More Packages\fR +.PP +This example uses \f3-sourcepath\fR so the \f3javadoc\fR command can be run from any directory and \f3-subpackages\fR (a new 1\&.4 option) for recursion\&. It traverses the subpackages of the java directory excluding packages rooted at \f3java\&.net\fR and \f3java\&.lang\fR\&. Notice this excludes \f3java\&.lang\&.ref\fR, a subpackage of \f3java\&.lang\fR\&. To also traverse down other package trees, append their names to the \f3-subpackages\fR argument, such as \f3java:javax:org\&.xml\&.sax\fR\&. +.sp +.nf +\f3javadoc \-d /home/html \-sourcepath /home/src \-subpackages java \-exclude\fP +.fi +.nf +\f3\fR +.fi +.sp +\f3Example 2 Change to Root and Run Explicit Packages\fR +.PP +Change to the parent directory of the fully qualified package\&. Then, run the \f3javadoc\fR command with the names of one or more packages that you want to document: +.sp +.nf +\f3cd /home/src/\fP +.fi +.nf +\f3javadoc \-d /home/html java\&.awt java\&.awt\&.event\fP +.fi +.nf +\f3\fR +.fi +.sp +To also traverse down other package trees, append their names to the \f3-subpackages\fR argument, such as j\f3ava:javax:org\&.xml\&.sax\fR\&. +.PP +\f3Example 3 Run from Any Directory on Explicit Packages in One Tree\fR +.PP +In this case, it does not matter what the current directory is\&. Run the \f3javadoc\fR command and use the \f3-sourcepath\fR option with the parent directory of the top-level package\&. Provide the names of one or more packages that you want to document: +.sp +.nf +\f3javadoc \-d /home/html \-sourcepath /home/src java\&.awt java\&.awt\&.event\fP +.fi +.nf +\f3\fR +.fi +.sp +\f3Example 4 Run from Any Directory on Explicit Packages in Multiple Trees\fR +.PP +Run the \f3javadoc\fR command and use the \f3-sourcepath\fR option with a colon-separated list of the paths to each tree\&'s root\&. Provide the names of one or more packages that you want to document\&. All source files for a specified package do not need to be located under a single root directory, but they must be found somewhere along the source path\&. +.sp +.nf +\f3javadoc \-d /home/html \-sourcepath /home/src1:/home/src2 java\&.awt java\&.awt\&.event\fP +.fi +.nf +\f3\fR +.fi +.sp +The result is that all cases generate HTML-formatted documentation for the \f3public\fR and \f3protected\fR classes and interfaces in packages j\f3ava\&.awt\fR and \f3java\&.awt\&.even\fRt and save the HTML files in the specified destination directory\&. Because two or more packages are being generated, the document has three HTML frames: one for the list of packages, another for the list of classes, and the third for the main class pages\&. +.PP +Document One or More Classes + +The second way to run the \f3javadoc\fR command is to pass one or more source files\&. You can run \f3javadoc\fR either of the following two ways: by changing directories (with the \f3cd\fR command) or by fully specifying the path to the source files\&. Relative paths are relative to the current directory\&. The \f3-sourcepath\fR option is ignored when passing source files\&. You can use command-line wild cards, such as an asterisk (*), to specify groups of classes\&. +.PP +\f3Example 1 Change to the Source Directory\fR +.PP +Change to the directory that holds the source files\&. Then run the \f3javadoc\fR command with the names of one or more source files you want to document\&. +.PP +This example generates HTML-formatted documentation for the classes \f3Button\fR, \f3Canvas,\fR and classes that begin with \f3Graphics\fR\&. Because source files rather than package names were passed in as arguments to the \f3javadoc\fR command, the document has two frames: one for the list of classes and the other for the main page\&. +.sp +.nf +\f3cd /home/src/java/awt\fP +.fi +.nf +\f3javadoc \-d /home/html Button\&.java Canvas\&.java Graphics*\&.java\fP +.fi +.nf +\f3\fR +.fi +.sp +\f3Example 2 Change to the Root Directory of the Package\fR +.PP +This is useful for documenting individual source files from different subpackages off of the same root\&. Change to the package root directory, and supply the source files with paths from the root\&. +.sp +.nf +\f3cd /home/src/\fP +.fi +.nf +\f3javadoc \-d /home/html java/awt/Button\&.java java/applet/Applet\&.java\fP +.fi +.nf +\f3\fR +.fi +.sp +\f3Example 3 Document Files from Any Directory\fR +.PP +In this case, it does not matter what the current directory is\&. Run the \f3javadoc\fR command with the absolute path (or path relative to the current directory) to the source files you want to document\&. +.sp +.nf +\f3javadoc \-d /home/html /home/src/java/awt/Button\&.java\fP +.fi +.nf +\f3/home/src/java/awt/Graphics*\&.java\fP +.fi +.nf +\f3\fR +.fi +.sp + +.PP +Document Packages and Classes + +You can document entire packages and individual classes at the same time\&. Here is an example that mixes two of the previous examples\&. You can use the \f3-sourcepath\fR option for the path to the packages but not for the path to the individual classes\&. +.sp +.nf +\f3javadoc \-d /home/html \-sourcepath /home/src java\&.awt\fP +.fi +.nf +\f3/home/src/java/applet/Applet\&.java\fP +.fi +.nf +\f3\fR +.fi +.sp +.SS REAL-WORLD\ EXAMPLES +The following command-line and \f3makefile\fR versions of the \f3javadoc\fR command run on the Java platform APIs\&. It uses 180 MB of memory to generate the documentation for the 1500 (approximately) public and protected classes in the Java SE 1\&.2\&. Both examples use absolute paths in the option arguments, so that the same \f3javadoc\fR command can be run from any directory\&. +.PP +Command-Line Example + +The following command might be too long for some shells\&. You can use a command-line argument file (or write a shell script) to overcome this limitation\&. +.PP +In the example, \f3packages\fR is the name of a file that contains the packages to process, such as \f3java\&.applet\fR\f3java\&.lang\fR\&. None of the options should contain any newline characters between the single quotation marks\&. For example, if you copy and paste this example, then delete the newline characters from the \f3-bottom\fR option\&. +.sp +.nf +\f3javadoc \-sourcepath /java/jdk/src/share/classes \e\fP +.fi +.nf +\f3\-overview /java/jdk/src/share/classes/overview\&.html \e\fP +.fi +.nf +\f3\-d /java/jdk/build/api \e\fP +.fi +.nf +\f3\-use \e\fP +.fi +.nf +\f3\-splitIndex \e\fP +.fi +.nf +\f3\-windowtitle \&'Java Platform, Standard Edition 7 API Specification\&' \e\fP +.fi +.nf +\f3\-doctitle \&'Java Platform, Standard Edition 7 API Specification\&' \e\fP +.fi +.nf +\f3\-header \&'Java\(tm SE 7\&' \e\fP +.fi +.nf +\f3\-bottom \&'\fP +.fi +.nf +\f3Submit a bug or feature
      \fP +.fi +.nf +\f3Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&.
      \fP +.fi +.nf +\f3Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&.\fP +.fi +.nf +\f3Other names may be trademarks of their respective owners\&.
      \&' \e\fP +.fi +.nf +\f3\-group "Core Packages" "java\&.*:com\&.sun\&.java\&.*:org\&.omg\&.*" \e\fP +.fi +.nf +\f3\-group "Extension Packages" "javax\&.*" \e\fP +.fi +.nf +\f3\-J\-Xmx180m \e \fP +.fi +.nf +\f3@packages\fP +.fi +.nf +\f3\fR +.fi +.sp + +.PP +Programmatic Interface + +The Javadoc Access API enables the user to invoke the Javadoc tool directly from a Java application without executing a new process\&. +.PP +For example, the following statements are equivalent to the command \f3javadoc -d /home/html -sourcepath /home/src -subpackages java -exclude java\&.net:java\&.lang com\&.example\fR: +.sp +.nf +\f3import javax\&.tools\&.DocumentationTool;\fP +.fi +.nf +\f3import javax\&.tools\&.ToolProvider;\fP +.fi +.nf +\f3\fR +.fi +.nf +\f3public class JavaAccessSample{\fP +.fi +.nf +\f3 public static void main(String[] args){\fP +.fi +.nf +\f3 DocumentationTool javadoc = ToolProvider\&.getSystemDocumentationTool();\fP +.fi +.nf +\f3 int rc = javadoc\&.run( null, null, null,\fP +.fi +.nf +\f3 "\-d", "/home/html",\fP +.fi +.nf +\f3 "\-sourcepath", "home/src",\fP +.fi +.nf +\f3 "\-subpackages", "java",\fP +.fi +.nf +\f3 "\-exclude", "java\&.net:java\&.lang",\fP +.fi +.nf +\f3 "com\&.example");\fP +.fi +.nf +\f3 }\fP +.fi +.nf +\f3 }\fP +.fi +.nf +\f3\fR +.fi +.sp +The first three arguments of the \f3run\fR method specify input, standard output, and standard error streams\&. \f3Null\fR is the default value for \f3System\&.in\fR, \f3System\&.out\fR, and \f3System\&.err\fR, respectively\&. +.SS THE\ MAKEFILE\ EXAMPLE +This is an example of a GNU \f3makefile\fR\&. Single quotation marks surround \f3makefile\fR arguments\&. For an example of a Windows \f3makefile\fR, see the \f3makefiles\fR section of the Javadoc FAQ at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137483\&.html#makefiles +.sp +.nf +\f3javadoc \-sourcepath $(SRCDIR) \e /* Sets path for source files */\fP +.fi +.nf +\f3 \-overview $(SRCDIR)/overview\&.html \e /* Sets file for overview text */\fP +.fi +.nf +\f3 \-d /java/jdk/build/api \e /* Sets destination directory */\fP +.fi +.nf +\f3 \-use \e /* Adds "Use" files */\fP +.fi +.nf +\f3 \-splitIndex \e /* Splits index A\-Z */\fP +.fi +.nf +\f3 \-windowtitle $(WINDOWTITLE) \e /* Adds a window title */\fP +.fi +.nf +\f3 \-doctitle $(DOCTITLE) \e /* Adds a doc title */\fP +.fi +.nf +\f3 \-header $(HEADER) \e /* Adds running header text */\fP +.fi +.nf +\f3 \-bottom $(BOTTOM) \e /* Adds text at bottom */\fP +.fi +.nf +\f3 \-group $(GROUPCORE) \e /* 1st subhead on overview page */\fP +.fi +.nf +\f3 \-group $(GROUPEXT) \e /* 2nd subhead on overview page */\fP +.fi +.nf +\f3 \-J\-Xmx180m \e /* Sets memory to 180MB */\fP +.fi +.nf +\f3 java\&.lang java\&.lang\&.reflect \e /* Sets packages to document */\fP +.fi +.nf +\f3 java\&.util java\&.io java\&.net \e\fP +.fi +.nf +\f3 java\&.applet\fP +.fi +.nf +\f3\fR +.fi +.nf +\f3WINDOWTITLE = \&'Java\(tm SE 7 API Specification\&'\fP +.fi +.nf +\f3DOCTITLE = \&'Java\(tm Platform Standard Edition 7 API Specification\&'\fP +.fi +.nf +\f3HEADER = \&'Java\(tm SE 7\&'\fP +.fi +.nf +\f3BOTTOM = \&'\fP +.fi +.nf +\f3 Submit a bug or feature
      \fP +.fi +.nf +\f3 Copyright © 1993, 2011, Oracle and/or its affiliates\&. All rights reserved\&.
      \fP +.fi +.nf +\f3 Oracle is a registered trademark of Oracle Corporation and/or its affiliates\&.\fP +.fi +.nf +\f3 Other names may be trademarks of their respective owners\&.
      \&'\fP +.fi +.nf +\f3GROUPCORE = \&'"Core Packages" "java\&.*:com\&.sun\&.java\&.*:org\&.omg\&.*"\&'\fP +.fi +.nf +\f3GROUPEXT = \&'"Extension Packages" "javax\&.*"\&'\fP +.fi +.nf +\f3SRCDIR = \&'/java/jdk/1\&.7\&.0/src/share/classes\&'\fP +.fi +.nf +\f3\fR +.fi +.sp +.SS NOTES +.TP 0.2i +\(bu +If you omit the \f3-windowtitle\fR option, then the \f3javadoc\fR command copies the document title to the window title\&. The \f3-windowtitle\fR option text is similar to the the \f3-doctitle\fR option, but without HTML tags to prevent those tags from appearing as raw text in the window title\&. +.TP 0.2i +\(bu +If you omit the \f3-footer\fR option, then the \f3javadoc\fR command copies the header text to the footer\&. +.TP 0.2i +\(bu +Other important options you might want to use, but were not needed in the previous example, are the \f3-classpath\fR and \f3-link\fR options\&. +.SH GENERAL\ TROUBLESHOOTING +.TP 0.2i +\(bu +The \f3javadoc\fR command reads only files that contain valid class names\&. If the \f3javadoc\fR command is not correctly reading the contents of a file, then verify that the class names are valid\&. See Process Source Files\&. +.TP 0.2i +\(bu +See the Javadoc FAQ for information about common bugs and for troubleshooting tips at http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137483\&.html +.SH ERRORS\ AND\ WARNINGS +Error and warning messages contain the file name and line number to the declaration line rather than to the particular line in the documentation comment\&. +.PP +For example, this message \f3error: cannot read: Class1\&.java\fR means that the \f3javadoc\fR command is trying to load \f3Class1\&.jav\fR\f3a\fR in the current directory\&. The class name is shown with its path (absolute or relative)\&. +.SH ENVIRONMENT +.TP CLASSPATH -Environment variable that provides the path which javadoc uses to find user class files. This environment variable is overridden by the \f2\-classpath\fP option. Separate directories with a colon, for example: -.:/home/classes:/usr/local/java/classes -.RE -.SH "SEE ALSO" -.RS 3 -.TP 2 -o -javac(1) -.TP 2 -o -java(1) -.TP 2 -o -jdb(1) -.TP 2 -o -javah(1) -.TP 2 -o -javap(1) -.TP 2 -o -.na -\f2Javadoc Home Page\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-jsp\-135444.html -.TP 2 -o -.na -\f2How to Write Doc Comments for Javadoc\fP @ -.fi -http://www.oracle.com/technetwork/java/javase/documentation/index\-137868.html -.TP 2 -o -.na -\f2Setting the Class Path\fP @ -.fi -http://download.oracle.com/javase/7/docs/technotes/tools/index.html#general -.TP 2 -o -.na -\f2How Javac and Javadoc Find Classes\fP @ -.fi -http://download.oracle.com/javase/7/docs/technotes/tools/findingclasses.html#srcfiles (tools.jar) -.RE +\f3CLASSPATH\fR is the environment variable that provides the path that the \f3javadoc\fR command uses to find user class files\&. This environment variable is overridden by the \f3-classpath\fR option\&. Separate directories with a semicolon for Windows or a colon for Oracle Solaris\&. +\fIWindows example\fR: \f3\&.;C:\eclasses;C:\ehome\ejava\eclasses\fR + +\fIOracle Solaris example\fR: \f3\&.:/home/classes:/usr/local/java/classes\fR\&. +.SH SEE\ ALSO +.TP 0.2i +\(bu +javac(1) +.TP 0.2i +\(bu +java(1) +.TP 0.2i +\(bu +jdb(1) +.TP 0.2i +\(bu +javah(1) +.TP 0.2i +\(bu +javap(1) +.SH RELATED\ DOCUMENTS +.TP 0.2i +\(bu +Javadoc Technology at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/javadoc/index\&.html +.TP 0.2i +\(bu +How Classes Are Found http://docs\&.oracle\&.com/javase/8/docs/technotes/tools/findingclasses\&.html +.TP 0.2i +\(bu +How to Write Doc Comments for the Javadoc Tool http://www\&.oracle\&.com/technetwork/java/javase/documentation/index-137868\&.html +.TP 0.2i +\(bu +URL Memo, Uniform Resource Locators http://www\&.ietf\&.org/rfc/rfc1738\&.txt +.TP 0.2i +\(bu +HTML standard, HTML Document Representation (4197265 and 4137321) http://www\&.w3\&.org/TR/REC-html40/charset\&.html#h-5\&.2\&.2 +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/bsd/doc/man/javah.1 b/jdk/src/bsd/doc/man/javah.1 index 3a2badfc3c0..5b8979e55c3 100644 --- a/jdk/src/bsd/doc/man/javah.1 +++ b/jdk/src/bsd/doc/man/javah.1 @@ -1,138 +1,159 @@ -." Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." under the terms of the GNU General Public License version 2 only, as -." published by the Free Software Foundation. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -." or visit www.oracle.com if you need additional information or have any -." questions. -." -.TH javah 1 "10 May 2011" +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute it and/or modify it +.\" under the terms of the GNU General Public License version 2 only, as +.\" published by the Free Software Foundation. +.\" +.\" This code is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +.\" version 2 for more details (a copy is included in the LICENSE file that +.\" accompanied this code). +.\" +.\" You should have received a copy of the GNU General Public License version +.\" 2 along with this work; if not, write to the Free Software Foundation, +.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +.\" +.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +.\" or visit www.oracle.com if you need additional information or have any +.\" questions. +.\" +.\" Arch: generic +.\" Software: JDK 8 +.\" Date: 21 November 2013 +.\" SectDesc: Basic Tools +.\" Title: javah.1 +.\" +.if n .pl 99999 +.TH javah 1 "21 November 2013" "JDK 8" "Basic Tools" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- -.LP -.SH "Name" -javah \- C Header and Stub File Generator -.LP -.LP -\f3javah\fP produces C header files and C source files from a Java class. These files provide the connective glue that allow your Java and C code to interact. -.LP -.SH "SYNOPSIS" -.LP -.nf -\f3 -.fl -javah [ \fP\f3options\fP\f3 ] fully\-qualified\-classname. . . -.fl -\fP -.fi +.SH NAME +javah \- Generates C header and source files from a Java class\&. +.SH SYNOPSIS +.sp +.nf -.LP -.SH "DESCRIPTION" -.LP -.LP -\f3javah\fP generates C header and source files that are needed to implement native methods. The generated header and source files are used by C programs to reference an object's instance variables from native source code. The .h file contains a struct definition whose layout parallels the layout of the corresponding class. The fields in the struct correspond to instance variables in the class. -.LP -.LP -The name of the header file and the structure declared within it are derived from the name of the class. If the class passed to \f3javah\fP is inside a package, the package name is prepended to both the header file name and the structure name. Underscores (_) are used as name delimiters. -.LP -.LP -By default \f3javah\fP creates a header file for each class listed on the command line and puts the files in the current directory. Use the \f2\-stubs\fP option to create source files. Use the \f2\-o\fP option to concatenate the results for all listed classes into a single file. -.LP -.LP -The new native method interface, Java Native Interface (JNI), does not require header information or stub files. \f3javah\fP can still be used to generate native method function proptotypes needed for JNI\-style native methods. \f3javah\fP produces JNI\-style output by default, and places the result in the .h file. -.LP -.SH "OPTIONS" -.LP -.RS 3 -.TP 3 -\-o outputfile -Concatenates the resulting header or source files for all the classes listed on the command line into \f2outputfile\fP. Only one of \f3\-o\fP or \f3\-d\fP may be used. -.TP 3 -\-d directory -Sets the directory where \f3javah\fP saves the header files or the stub files. Only one of \f3\-d\fP or \f3\-o\fP may be used. -.TP 3 -\-stubs -Causes \f3javah\fP to generate C declarations from the Java object file. -.TP 3 -\-verbose -Indicates verbose output and causes \f3javah\fP to print a message to stdout concerning the status of the generated files. -.TP 3 -\-help -Print help message for \f3javah\fP usage. -.TP 3 -\-version -Print out \f3javah\fP version information. -.TP 3 -\-jni -Causes \f3javah\fP to create an output file containing JNI\-style native method function prototypes. This is the default output, so use of \f3\-jni\fP is optional. -.TP 3 -\-classpath path -Specifies the path \f3javah\fP uses to look up classes. Overrides the default or the CLASSPATH environment variable if it is set. Directories are separated by colons. Thus the general format for \f2path\fP is: -.nf -\f3 -.fl - .: -.fl -\fP -.fi -For example: -.nf -\f3 -.fl - .:/home/avh/classes:/usr/local/java/classes -.fl -\fP -.fi -As a special convenience, a class path element containing a basename of \f2*\fP is considered equivalent to specifying a list of all the files in the directory with the extension \f2.jar\fP or \f2.JAR\fP (a java program cannot tell the difference between the two invocations). +\fBjavah\fR [ \fIoptions\fR ] f\fIully\-qualified\-class\-name \&.\&.\&.\fR +.fi +.sp +.TP +\fIoptions\fR +The command-line options\&. See Options\&. +.TP +\fIfully-qualified-class-name\fR +The fully qualified location of the classes to be converted to C header and source files\&. +.SH DESCRIPTION +The \f3javah\fR command generates C header and source files that are needed to implement native methods\&. The generated header and source files are used by C programs to reference an object\&'s instance variables from native source code\&. The \f3\&.h\fR file contains a \f3struct\fR definition with a layout that parallels the layout of the corresponding class\&. The fields in the \f3struct\fR correspond to instance variables in the class\&. +.PP +The name of the header file and the structure declared within it are derived from the name of the class\&. When the class passed to the \f3javah\fR command is inside a package, the package name is added to the beginning of both the header file name and the structure name\&. Underscores (_) are used as name delimiters\&. +.PP +By default the \f3javah\fR command creates a header file for each class listed on the command line and puts the files in the current directory\&. Use the \f3-stubs\fR option to create source files\&. Use the \f3-o\fR option to concatenate the results for all listed classes into a single file\&. +.PP +The Java Native Interface (JNI) does not require header information or stub files\&. The \f3javah\fR command can still be used to generate native method function prototypes needed for JNI-style native methods\&. The \f3javah\fR command produces JNI-style output by default and places the result in the \f3\&.h\fR file\&. +.SH OPTIONS +.TP +-o \fIoutputfile\fR .br +Concatenates the resulting header or source files for all the classes listed on the command line into an output file\&. Only one of \f3-o\fR or \f3-d\fR can be used\&. +.TP +-d \fIdirectory\fR .br -For example, if directory \f2foo\fP contains \f2a.jar\fP and \f2b.JAR\fP, then the class path element \f2foo/*\fP is expanded to a \f2A.jar:b.JAR\fP, except that the order of jar files is unspecified. All jar files in the specified directory, even hidden ones, are included in the list. A classpath entry consisting simply of \f2*\fP expands to a list of all the jar files in the current directory. The \f2CLASSPATH\fP environment variable, where defined, will be similarly expanded. Any classpath wildcard expansion occurs before the Java virtual machine is started \-\- no Java program will ever see unexpanded wildcards except by querying the environment. For example; by invoking \f2System.getenv("CLASSPATH")\fP. -.TP 3 -\-bootclasspath path -Specifies path from which to load bootstrap classes. By default, the bootstrap classes are the classes implementing the core Java 2 platform located in \f2jre/lib/rt.jar\fP and several other jar files. -.TP 3 -\-old -Specifies that old JDK1.0\-style header files should be generated. -.TP 3 -\-force -Specifies that output files should always be written. -.TP 3 -\-Joption -Pass \f2option\fP to the Java virtual machine, where \f2option\fP is one of the options described on the reference page for the java(1). For example, \f3\-J\-Xms48m\fP sets the startup memory to 48 megabytes. -.RE +Sets the directory where the \f3javah\fR command saves the header files or the stub files\&. Only one of \f3-d\fR or \f3-o\fR can be used\&. +.TP +-stubs +.br +Causes the \f3javah\fR command to generate C declarations from the Java object file\&. +.TP +-verbose +.br +Indicates verbose output and causes the \f3javah\fR command to print a message to \f3stdout\fR about the status of the generated files\&. +.TP +-help +.br +Prints a help message for \f3javah\fR usage\&. +.TP +-version +.br +Prints \f3javah\fR command release information\&. +.TP +-jni +.br +Causes the \f3javah\fR command to create an output file containing JNI-style native method function prototypes\&. This is the default output; use of \f3-jni\fR is optional\&. +.TP +-classpath \fIpath\fR +.br +Specifies the path the \f3javah\fR command uses to look up classes\&. Overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. Directories are separated by colons on Oracle Solaris and semicolons on Windows\&. The general format for path is: -.LP -.SH "ENVIRONMENT VARIABLES" -.LP -.RS 3 -.TP 3 -CLASSPATH -Used to provide the system a path to user\-defined classes. Directories are separated by colons, for example, -.nf -\f3 -.fl -.:/home/avh/classes:/usr/local/java/classes -.fl -\fP -.fi -.RE +\fIOracle Solaris\fR: -.LP -.SH "SEE ALSO" -.LP -.LP -javac(1), java(1), jdb(1), javap(1), javadoc(1) -.LP +\&.:\fIyour-path\fR +Example: \f3\&.:/home/avh/classes:/usr/local/java/classes\fR + +\fIWindows\fR: + +\&.;\fIyour-path\fR + +Example: \f3\&.;C:\eusers\edac\eclasses;C:\etools\ejava\eclasses\fR + +As a special convenience, a class path element that contains a base name of * is considered equivalent to specifying a list of all the files in the directory with the extension \f3\&.jar\fR or \f3\&.JAR\fR\&. + +For example, if directory \f3mydir\fR contains \f3a\&.jar\fR and \f3b\&.JAR\fR, then the class path element \f3mydir/*\fR is expanded to a \f3A\fR\f3\&.jar:b\&.JAR\fR, except that the order of jar files is unspecified\&. All JAR files in the specified directory, including hidden ones, are included in the list\&. A class path entry that consists of * expands to a list of all the JAR files in the current directory\&. The \f3CLASSPATH\fR environment variable, where defined, is similarly expanded\&. Any class path wild card expansion occurs before the Java Virtual Machine (JVM) is started\&. A Java program will never see unexpanded wild cards except by querying the environment\&. For example, by calling \f3System\&.getenv("CLASSPATH")\fR\&. +.TP +-bootclasspath \fIpath\fR +.br +Specifies the path from which to load bootstrap classes\&. By default, the bootstrap classes are the classes that implement the core Java platform located in \f3jre\elib\ert\&.jar\fR and several other JAR files\&. +.TP +-old +.br +Specifies that old JDK 1\&.0-style header files should be generated\&. +.TP +-force +.br +Specifies that output files should always be written\&. +.TP +-J\fIoption\fR +.br +Passes \f3option\fR to the Java Virtual Machine, where \f3option\fR is one of the options described on the reference page for the Java application launcher\&. For example, \f3-J-Xms48m\fR sets the startup memory to 48 MB\&. See java(1)\&. +.SH SEE\ ALSO +.TP 0.2i +\(bu +javah(1) +.TP 0.2i +\(bu +java(1) +.TP 0.2i +\(bu +jdb(1) +.TP 0.2i +\(bu +javap(1) +.TP 0.2i +\(bu +javadoc(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/bsd/doc/man/javap.1 b/jdk/src/bsd/doc/man/javap.1 index 08fb9b4c22c..353a13fb0fd 100644 --- a/jdk/src/bsd/doc/man/javap.1 +++ b/jdk/src/bsd/doc/man/javap.1 @@ -1,317 +1,443 @@ -." Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." under the terms of the GNU General Public License version 2 only, as -." published by the Free Software Foundation. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -." or visit www.oracle.com if you need additional information or have any -." questions. -." -.TH javap 1 "10 May 2011" +'\" t +.\" Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute it and/or modify it +.\" under the terms of the GNU General Public License version 2 only, as +.\" published by the Free Software Foundation. +.\" +.\" This code is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +.\" version 2 for more details (a copy is included in the LICENSE file that +.\" accompanied this code). +.\" +.\" You should have received a copy of the GNU General Public License version +.\" 2 along with this work; if not, write to the Free Software Foundation, +.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +.\" +.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +.\" or visit www.oracle.com if you need additional information or have any +.\" questions. +.\" +.\" Arch: generic +.\" Software: JDK 8 +.\" Date: 21 November 2013 +.\" SectDesc: Basic Tools +.\" Title: javap.1 +.\" +.if n .pl 99999 +.TH javap 1 "21 November 2013" "JDK 8" "Basic Tools" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- -.LP -.SH "Name" -javap \- The Java Class File Disassembler -.LP -.LP -Disassembles class files. -.LP -.SH "SYNOPSIS" -.LP -.nf -\f3 -.fl -javap [ \fP\f3options\fP\f3 ] classes -.fl -\fP -.fi +.SH NAME +javap \- Disassembles one or more class files\&. +.SH SYNOPSIS +.sp +.nf -.LP -.SH "DESCRIPTION" -.LP -.LP -The \f3javap\fP command disassembles one or more class files. Its output depends on the options used. If no options are used, \f3javap\fP prints out the package, protected, and public fields and methods of the classes passed to it. \f3javap\fP prints its output to stdout. -.LP -.RS 3 -.TP 3 -options -Command\-line options. -.TP 3 -classes -List of one or more classes (separated by spaces) to be processed for annotations (such as \f2DocFooter.class\fP). You may specify a class that can be found in the class path, by its file name (for example, \f2/home/user/myproject/src/DocFooter.class\fP), or with a URL (for example, \f2file:///home/user/myproject/src/DocFooter.class\fP). -.RE +\fBjavap\fR [\fIoptions\fR] \fIclassfile\fR\&.\&.\&. +.fi +.sp +.TP +\fIoptions\fR +The command-line options\&. See Options\&. +.TP +\fIclassfile\fR +One or more classes separated by spaces to be processed for annotations such as DocFooter\&.class\&. You can specify a class that can be found in the class path, by its file name or with a URL such as \f3file:///home/user/myproject/src/DocFooter\&.class\fR\&. +.SH DESCRIPTION +The \f3javap\fR command disassembles one or more class files\&. The output depends on the options used\&. When no options are used, then the \f3javap\fR command prints the package, protected and public fields, and methods of the classes passed to it\&. The \f3javap\fR command prints its output to \f3stdout\fR\&. +.SH OPTIONS +.TP +-help, --help, -? +.br +Prints a help message for the \f3javap\fR command\&. +.TP +-version +.br +Prints release information\&. +.TP +-l +.br +Prints line and local variable tables\&. +.TP +-public +.br +Shows only public classes and members\&. +.TP +-protected +.br +Shows only protected and public classes and members\&. +.TP +-private, -p +.br +Shows all classes and members\&. +.TP +-J\fIoption\fR +.br +Passes the specified option to the JVM\&. For example: +.sp +.nf +\f3javap \-J\-version\fP +.fi +.nf +\f3javap \-J\-Djava\&.security\&.manager \-J\-Djava\&.security\&.policy=MyPolicy MyClassName\fP +.fi +.nf +\f3\fP +.fi +.sp -.LP -.LP -For example, compile the following class declaration: -.LP -.nf -\f3 -.fl -import java.awt.*; -.fl -import java.applet.*; -.fl - -.fl -public class DocFooter extends Applet { -.fl - String date; -.fl - String email; -.fl - -.fl - public void init() { -.fl - resize(500,100); -.fl - date = getParameter("LAST_UPDATED"); -.fl - email = getParameter("EMAIL"); -.fl - } -.fl - -.fl - public void paint(Graphics g) { -.fl - g.drawString(date + " by ",100, 15); -.fl - g.drawString(email,290,15); -.fl - } -.fl -} -.fl -\fP -.fi - -.LP -.LP -The output from \f3javap DocFooter.class\fP yields: -.LP -.nf -\f3 -.fl -Compiled from "DocFooter.java" -.fl -public class DocFooter extends java.applet.Applet { -.fl - java.lang.String date; -.fl - java.lang.String email; -.fl - public DocFooter(); -.fl - public void init(); -.fl - public void paint(java.awt.Graphics); -.fl -} -.fl -\fP -.fi - -.LP -.LP -The output from \f3javap \-c DocFooter.class\fP yields: -.LP -.nf -\f3 -.fl -Compiled from "DocFooter.java" -.fl -public class DocFooter extends java.applet.Applet { -.fl - java.lang.String date; -.fl - -.fl - java.lang.String email; -.fl - -.fl - public DocFooter(); -.fl - Code: -.fl - 0: aload_0 -.fl - 1: invokespecial #1 // Method java/applet/Applet."":()V -.fl - 4: return -.fl - -.fl - public void init(); -.fl - Code: -.fl - 0: aload_0 -.fl - 1: sipush 500 -.fl - 4: bipush 100 -.fl - 6: invokevirtual #2 // Method resize:(II)V -.fl - 9: aload_0 -.fl - 10: aload_0 -.fl - 11: ldc #3 // String LAST_UPDATED -.fl - 13: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String; -.fl - 16: putfield #5 // Field date:Ljava/lang/String; -.fl - 19: aload_0 -.fl - 20: aload_0 -.fl - 21: ldc #6 // String EMAIL -.fl - 23: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String; -.fl - 26: putfield #7 // Field email:Ljava/lang/String; -.fl - 29: return -.fl - -.fl - public void paint(java.awt.Graphics); -.fl - Code: -.fl - 0: aload_1 -.fl - 1: new #8 // class java/lang/StringBuilder -.fl - 4: dup -.fl - 5: invokespecial #9 // Method java/lang/StringBuilder."":()V -.fl - 8: aload_0 -.fl - 9: getfield #5 // Field date:Ljava/lang/String; -.fl - 12: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; -.fl - 15: ldc #11 // String by -.fl - 17: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; -.fl - 20: invokevirtual #12 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; -.fl - 23: bipush 100 -.fl - 25: bipush 15 -.fl - 27: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V -.fl - 30: aload_1 -.fl - 31: aload_0 -.fl - 32: getfield #7 // Field email:Ljava/lang/String; -.fl - 35: sipush 290 -.fl - 38: bipush 15 -.fl - 40: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V -.fl - 43: return -.fl -} -.fl -\fP -.fi - -.LP -.SH "OPTIONS" -.LP -.RS 3 -.TP 3 -\-help \-\-help \-? -Prints out help message for \f3javap\fP. -.TP 3 -\-version -Prints out version information. -.TP 3 -\-l -Prints out line and local variable tables. -.TP 3 -\-public -Shows only public classes and members. -.TP 3 -\-protected -Shows only protected and public classes and members. -.TP 3 -\-package -Shows only package, protected, and public classes and members. This is the default. -.TP 3 -\-private \-p -Shows all classes and members. -.TP 3 -\-Jflag -Pass \f2flag\fP directly to the runtime system. Some examples: -.nf -\f3 -.fl -javap \-J\-version -.fl -javap \-J\-Djava.security.manager \-J\-Djava.security.policy=MyPolicy MyClassName -.fl -\fP -.fi -.TP 3 -\-s -Prints internal type signatures. -.TP 3 -\-sysinfo -Shows system information (path, size, date, MD5 hash) of the class being processed. -.TP 3 -\-constants -Shows static final constants. -.TP 3 -\-c -Prints out disassembled code, i.e., the instructions that comprise the Java bytecodes, for each of the methods in the class. These are documented in the -.na -\f2Java Virtual Machine Specification\fP @ -.fi -http://java.sun.com/docs/books/vmspec/. -.TP 3 -\-verbose -Prints stack size, number of \f2locals\fP and \f2args\fP for methods. -.TP 3 -\-classpath path -Specifies the path \f3javap\fP uses to look up classes. Overrides the default or the CLASSPATH environment variable if it is set. -.TP 3 -\-bootclasspath path -Specifies path from which to load bootstrap classes. By default, the bootstrap classes are the classes implementing the core Java platform located in \f2jre/lib/rt.jar\fP and several other jar files. -.TP 3 -\-extdirs dirs -Overrides location at which installed extensions are searched for. The default location for extensions is the value of \f2java.ext.dirs\fP. -.RE - -.LP -.SH "SEE ALSO" -.LP -.LP -javac(1), java(1), jdb(1), javah(1), javadoc(1) -.LP +For more information about JVM options, see the \f3java(1)\fR command documentation\&. +.TP +-s +.br +Prints internal type signatures\&. +.TP +-sysinfo +.br +Shows system information (path, size, date, MD5 hash) of the class being processed\&. +.TP +-constants +.br +Shows \f3static final\fR constants\&. +.TP +-c +.br +Prints disassembled code, for example, the instructions that comprise the Java bytecodes, for each of the methods in the class\&. +.TP +-verbose +.br +Prints stack size, number of locals and arguments for methods\&. +.TP +-classpath \fIpath\fR +.br +Specifies the path the \f3javap\fR command uses to look up classes\&. Overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. +.TP +-bootclasspath \fIpath\fR +.br +Specifies the path from which to load bootstrap classes\&. By default, the bootstrap classes are the classes that implement the core Java platform located in \f3jre/lib/rt\&.jar\fR and several other JAR files\&. +.TP +-extdir \fIdirs\fR +.br +Overrides the location at which installed extensions are searched for\&. The default location for extensions is the value of \f3java\&.ext\&.dirs\fR\&. +.SH EXAMPLE +Compile the following \f3DocFooter\fR class: +.sp +.nf +\f3import java\&.awt\&.*;\fP +.fi +.nf +\f3import java\&.applet\&.*;\fP +.fi +.nf +\f3\fP +.fi +.nf +\f3public class DocFooter extends Applet {\fP +.fi +.nf +\f3 String date;\fP +.fi +.nf +\f3 String email;\fP +.fi +.nf +\f3\fP +.fi +.nf +\f3 public void init() {\fP +.fi +.nf +\f3 resize(500,100);\fP +.fi +.nf +\f3 date = getParameter("LAST_UPDATED");\fP +.fi +.nf +\f3 email = getParameter("EMAIL");\fP +.fi +.nf +\f3 }\fP +.fi +.nf +\f3\fP +.fi +.nf +\f3 public void paint(Graphics g) {\fP +.fi +.nf +\f3 g\&.drawString(date + " by ",100, 15);\fP +.fi +.nf +\f3 g\&.drawString(email,290,15);\fP +.fi +.nf +\f3 }\fP +.fi +.nf +\f3}\fP +.fi +.nf +\f3\fP +.fi +.sp +The output from the \f3javap DocFooter\&.class\fR command yields the following: +.sp +.nf +\f3Compiled from "DocFooter\&.java"\fP +.fi +.nf +\f3public class DocFooter extends java\&.applet\&.Applet {\fP +.fi +.nf +\f3 java\&.lang\&.String date;\fP +.fi +.nf +\f3 java\&.lang\&.String email;\fP +.fi +.nf +\f3 public DocFooter();\fP +.fi +.nf +\f3 public void init();\fP +.fi +.nf +\f3 public void paint(java\&.awt\&.Graphics);\fP +.fi +.nf +\f3}\fP +.fi +.nf +\f3\fP +.fi +.sp +The output from \f3javap -c DocFooter\&.class\fR command yields the following: +.sp +.nf +\f3Compiled from "DocFooter\&.java"\fP +.fi +.nf +\f3public class DocFooter extends java\&.applet\&.Applet {\fP +.fi +.nf +\f3 java\&.lang\&.String date;\fP +.fi +.nf +\f3 java\&.lang\&.String email;\fP +.fi +.nf +\f3\fP +.fi +.nf +\f3 public DocFooter();\fP +.fi +.nf +\f3 Code:\fP +.fi +.nf +\f3 0: aload_0 \fP +.fi +.nf +\f3 1: invokespecial #1 // Method\fP +.fi +.nf +\f3java/applet/Applet\&."":()V\fP +.fi +.nf +\f3 4: return \fP +.fi +.nf +\f3\fP +.fi +.nf +\f3 public void init();\fP +.fi +.nf +\f3 Code:\fP +.fi +.nf +\f3 0: aload_0 \fP +.fi +.nf +\f3 1: sipush 500\fP +.fi +.nf +\f3 4: bipush 100\fP +.fi +.nf +\f3 6: invokevirtual #2 // Method resize:(II)V\fP +.fi +.nf +\f3 9: aload_0 \fP +.fi +.nf +\f3 10: aload_0 \fP +.fi +.nf +\f3 11: ldc #3 // String LAST_UPDATED\fP +.fi +.nf +\f3 13: invokevirtual #4 // Method\fP +.fi +.nf +\f3 getParameter:(Ljava/lang/String;)Ljava/lang/String;\fP +.fi +.nf +\f3 16: putfield #5 // Field date:Ljava/lang/String;\fP +.fi +.nf +\f3 19: aload_0 \fP +.fi +.nf +\f3 20: aload_0 \fP +.fi +.nf +\f3 21: ldc #6 // String EMAIL\fP +.fi +.nf +\f3 23: invokevirtual #4 // Method\fP +.fi +.nf +\f3 getParameter:(Ljava/lang/String;)Ljava/lang/String;\fP +.fi +.nf +\f3 26: putfield #7 // Field email:Ljava/lang/String;\fP +.fi +.nf +\f3 29: return \fP +.fi +.nf +\f3\fP +.fi +.nf +\f3 public void paint(java\&.awt\&.Graphics);\fP +.fi +.nf +\f3 Code:\fP +.fi +.nf +\f3 0: aload_1 \fP +.fi +.nf +\f3 1: new #8 // class java/lang/StringBuilder\fP +.fi +.nf +\f3 4: dup \fP +.fi +.nf +\f3 5: invokespecial #9 // Method\fP +.fi +.nf +\f3 java/lang/StringBuilder\&."":()V\fP +.fi +.nf +\f3 8: aload_0 \fP +.fi +.nf +\f3 9: getfield #5 // Field date:Ljava/lang/String;\fP +.fi +.nf +\f3 12: invokevirtual #10 // Method\fP +.fi +.nf +\f3 java/lang/StringBuilder\&.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;\fP +.fi +.nf +\f3 15: ldc #11 // String by \fP +.fi +.nf +\f3 17: invokevirtual #10 // Method\fP +.fi +.nf +\f3 java/lang/StringBuilder\&.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;\fP +.fi +.nf +\f3 20: invokevirtual #12 // Method\fP +.fi +.nf +\f3 java/lang/StringBuilder\&.toString:()Ljava/lang/String;\fP +.fi +.nf +\f3 23: bipush 100\fP +.fi +.nf +\f3 25: bipush 15\fP +.fi +.nf +\f3 27: invokevirtual #13 // Method\fP +.fi +.nf +\f3 java/awt/Graphics\&.drawString:(Ljava/lang/String;II)V\fP +.fi +.nf +\f3 30: aload_1 \fP +.fi +.nf +\f3 31: aload_0 \fP +.fi +.nf +\f3 32: getfield #7 // Field email:Ljava/lang/String;\fP +.fi +.nf +\f3 35: sipush 290\fP +.fi +.nf +\f3 38: bipush 15\fP +.fi +.nf +\f3 40: invokevirtual #13 // Method\fP +.fi +.nf +\f3java/awt/Graphics\&.drawString:(Ljava/lang/String;II)V\fP +.fi +.nf +\f3 43: return \fP +.fi +.nf +\f3}\fP +.fi +.nf +\f3\fP +.fi +.sp +.SH SEE\ ALSO +.TP 0.2i +\(bu +javac(1) +.TP 0.2i +\(bu +java(1) +.TP 0.2i +\(bu +jdb(1) +.TP 0.2i +\(bu +javah(1) +.TP 0.2i +\(bu +javadoc(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/bsd/doc/man/jcmd.1 b/jdk/src/bsd/doc/man/jcmd.1 new file mode 100644 index 00000000000..f789bdc5286 --- /dev/null +++ b/jdk/src/bsd/doc/man/jcmd.1 @@ -0,0 +1,114 @@ +'\" t +.\" Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute it and/or modify it +.\" under the terms of the GNU General Public License version 2 only, as +.\" published by the Free Software Foundation. +.\" +.\" This code is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +.\" version 2 for more details (a copy is included in the LICENSE file that +.\" accompanied this code). +.\" +.\" You should have received a copy of the GNU General Public License version +.\" 2 along with this work; if not, write to the Free Software Foundation, +.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +.\" +.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +.\" or visit www.oracle.com if you need additional information or have any +.\" questions. +.\" +.\" Arch: generic +.\" Software: JDK 8 +.\" Date: 21 November 2013 +.\" SectDesc: Troubleshooting Tools +.\" Title: jcmd.1 +.\" +.if n .pl 99999 +.TH jcmd 1 "21 November 2013" "JDK 8" "Troubleshooting Tools" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- + +.SH NAME +jcmd \- Sends diagnostic command requests to a running Java Virtual Machine (JVM)\&. +.SH SYNOPSIS +.sp +.nf + +\fBjcmd\fR [\fB\-l\fR|\fB\-h\fR|\fB\-help\fR] +.fi +.nf + +\fBjcmd\fR \fIpid\fR|\fImain\-class\fR \fBPerfCounter\&.print\fR +.fi +.nf + +\fBjcmd\fR \fIpid\fR|\fImain\-class\fR \fB\-f\fR \fIfilename\fR +.fi +.nf + +\fBjcmd\fR \fIpid\fR|\fImain\-class\fR \fIcommand\fR[ \fIarguments\fR] +.fi +.sp +.SH DESCRIPTION +The \f3jcmd\fR utility is used to send diagnostic command requests to the JVM\&. It must be used on the same machine on which the JVM is running, and have the same effective user and group identifiers that were used to launch the JVM\&. +.PP +\fINote:\fR To invoke diagnostic commands from a remote machine or with different identiers, you can use the \f3com\&.sun\&.management\&.DiagnosticCommandMBean\fR interface\&. For more information about the \f3DiagnosticCommandMBean\fR interface, see the API documentation at http://download\&.java\&.net/jdk8/docs/jre/api/management/extension/com/sun/management/DiagnosticCommandMBean\&.html +.PP +If you run \f3jcmd\fR without arguments or with the \f3-l\fR option, it prints the list of running Java process identifiers with the main class and command-line arguments that were used to launch the process\&. Running \f3jcmd\fR with the \f3-h\fR or \f3-help\fR option prints the tool\(cqs help message\&. +.PP +If you specify the processes identifier (\fIpid\fR) or the main class (\fImain-class\fR) as the first argument, \f3jcmd\fR sends the diagnostic command request to the Java process with the specified identifier or to all Java processes with the specified name of the main class\&. You can also send the diagnostic command request to all available Java processes by specifying \f30\fR as the process identifier\&. Use one of the following as the diagnostic command request: +.TP +Perfcounter\&.print +Prints the performance counters available for the specified Java process\&. The list of performance counters might vary with the Java process\&. +.TP +-f \fIfilename\fR +.br +The name of the file from which to read diagnostic commands and send them to the specified Java process\&. Used only with the \f3-f\fR option\&. Each command in the file must be written on a single line\&. Lines starting with a number sign (\f3#\fR) are ignored\&. Processing of the file ends when all lines have been read or when a line containing the \f3stop\fR keyword is read\&. +.TP +\fIcommand\fR [\fIarguments\fR] +The command to be sent to the specified Java process\&. The list of available diagnostic commands for a given process can be obtained by sending the \f3help\fR command to this process\&. Each diagnostic command has its own set of arguments\&. To see the description, syntax, and a list of available arguments for a command, use the name of the command as the argument for the \f3help\fR command\&. + +\fINote:\fR If any arguments contain spaces, you must surround them with single or double quotation marks (\f3\&'\fR or \f3"\fR)\&. In addition, you must escape single or double quotation marks with a backslash (\f3\e\fR) to prevent the operating system shell from processing quotation marks\&. Alternatively, you can surround these arguments with single quotation marks and then with double quotation marks (or with double quotation marks and then with single quotation marks)\&. +.SH OPTIONS +Options are mutually exclusive\&. +.TP +-f \fIfilename\fR +.br +Reads commands from the specified file\&. This option can be used only if you specify the process identifier or the main class as the first argument\&. Each command in the file must be written on a single line\&. Lines starting with a number sign (\f3#\fR) are ignored\&. Processing of the file ends when all lines have been read or when a line containing the \f3stop\fR keyword is read\&. +.TP +-h, -help +.br +Prints a help message\&. +.TP +-l +.br +Prints the list of running Java processes identifiers with the main class and command-line arguments\&. +.SH SEE\ ALSO +.TP 0.2i +\(bu +jps(1) +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/bsd/doc/man/jconsole.1 b/jdk/src/bsd/doc/man/jconsole.1 index 01b5cd6b157..8afd342a36b 100644 --- a/jdk/src/bsd/doc/man/jconsole.1 +++ b/jdk/src/bsd/doc/man/jconsole.1 @@ -1,137 +1,113 @@ -." Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." under the terms of the GNU General Public License version 2 only, as -." published by the Free Software Foundation. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -." or visit www.oracle.com if you need additional information or have any -." questions. -." -.TH jconsole 1 "10 May 2011" +'\" t +.\" Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute it and/or modify it +.\" 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. +.\" +.\" Arch: generic +.\" Software: JDK 8 +.\" Date: 21 November 2013 +.\" SectDesc: Java Troubleshooting, Profiling, Monitoring and Management Tools +.\" Title: jconsole.1 +.\" +.if n .pl 99999 +.TH jconsole 1 "21 November 2013" "JDK 8" "Java Troubleshooting, Profiling, Monitoring and Management Tools" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- -.LP -.SH "Name" -jconsole \- Java Monitoring and Management Console -.LP -.SH "SYNOPSIS" -.LP -.nf -\f3 -.fl -\fP\f3jconsole\fP [ \f2options\fP ] [ connection ... ] -.fl +.SH NAME +jconsole \- Starts a graphical console that lets you monitor and manage Java applications\&. +.SH SYNOPSIS +.sp +.nf -.fl -.fi +\fBjconsole\fR [ \fIoptions\fR ] [ connection \&.\&.\&. ] +.fi +.sp +.TP +\fIoptions\fR +The command-line options\&. See Options\&. +.TP +connection = \fIpid\fR | \fIhost\fR:\fIport\fR | \fIjmxURL\fR +The \f3pid\fR value is the process ID of a local Java Virtual Machine (JVM)\&. The JVM must be running with the same user ID as the user ID running the \f3jconsole\fR command\&.The \f3host:port\fR values are the name of the host system on which the JVM is running, and the port number specified by the system property \f3com\&.sun\&.management\&.jmxremote\&.port\fR when the JVM was started\&.The \f3jmxUrl\fR value is the address of the JMX agent to be connected to as described in JMXServiceURL\&. -.LP -.SH "PARAMETERS" -.LP -.RS 3 -.TP 3 -options -Options, if used, should follow immediately after the command name. -.TP 3 -connection = pid | host:port | jmxUrl -.RS 3 -.TP 2 -o -\f2pid\fP Process ID of a local Java VM. The Java VM must be running with the same user ID as the user ID running jconsole. See -.na -\f2JMX Monitoring and Management\fP @ -.fi -http://download.oracle.com/javase/7/docs/technotes/guides/management/agent.html for details. -.TP 2 -o -\f2host\fP:\f2port\fP Name of the host system on which the Java VM is running and the port number specified by the system property \f2com.sun.management.jmxremote.port\fP when the Java VM was started. See -.na -\f2JMX Monitoring and Management\fP @ -.fi -http://download.oracle.com/javase/7/docs/technotes/guides/management/agent.html for details. -.TP 2 -o -\f2jmxUrl\fP Address of the JMX agent to be connected to as described in -.na -\f2JMXServiceURL\fP @ -.fi -http://download.oracle.com/javase/7/docs/api/javax/management/remote/JMXServiceURL.html. -.RE -.RE +For more information about the \f3connection\fR parameter, see Monitoring and Management Using JMX Technology at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/agent\&.html -.LP -.SH "DESCRIPTION" -.LP -.LP -The \f3jconsole\fP command launches a graphical console tool that enables you to monitor and manage Java applications and virtual machines on a local or remote machine. -.LP -.LP -On Windows, \f3jconsole\fP does not associate with a console window. It will, however, display a dialog box with error information if the \f3jconsole\fP command fails for some reason. -.LP -.SH "OPTIONS" -.LP -.RS 3 -.TP 3 -\-interval=n -Set the update interval to \f2n\fP seconds (default is 4 seconds). -.TP 3 -\-notile -Do not tile windows initially (for two or more connections). -.TP 3 -\-pluginpath plugins -Specify a list of directories or JAR files which are searched for JConsole plugins. The \f2plugins\fP path should contain a provider\-configuration file named: +See also the \f3JMXServiceURL\fR class description at http://docs\&.oracle\&.com/javase/8/docs/api/javax/management/remote/JMXServiceURL\&.html +.SH DESCRIPTION +The \f3jconsole\fR command starts a graphical console tool that lets you monitor and manage Java applications and virtual machines on a local or remote machine\&. +.PP +On Windows, the \f3jconsole\fR command does not associate with a console window\&. It does, however, display a dialog box with error information when the \f3jconsole\fR command fails\&. +.SH OPTIONS +.TP +-interval\fI=n\fR .br -.nf -\f3 -.fl - META\-INF/services/com.sun.tools.jconsole.JConsolePlugin -.fl -\fP -.fi -containing one line for each plugin specifying the fully qualified class name of the class implementing the -.na -\f2com.sun.tools.jconsole.JConsolePlugin\fP @ -.fi -http://download.oracle.com/javase/7/docs/jdk/api/jconsole/spec/com/sun/tools/jconsole/JConsolePlugin.html class. -.TP 3 -\-version -Output version information and exit. -.TP 3 -\-help -Output help message and exit. -.TP 3 -\-J -Pass to the Java virtual machine on which jconsole is run. -.RE - -.LP -.SH "SEE ALSO" -.LP -.RS 3 -.TP 2 -o -.na -\f2Using JConsole\fP @ -.fi -http://download.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html -.TP 2 -o -.na -\f2Monitoring and Management for Java Platform\fP @ -.fi -http://download.oracle.com/javase/7/docs/technotes/guides/management/index.html -.RE - -.LP - +Sets the update interval to \fIn\fR seconds (default is 4 seconds)\&. +.TP +-notile +.br +Does not tile windows initially (for two or more connections)\&. +.TP +-pluginpath \fIplugins\fR +.br +Specifies a list of directories or JAR files to be searched for \f3JConsole\fR plug-ins\&. The \fIplugins\fR path should contain a provider-configuration file named \f3META-INF/services/com\&.sun\&.tools\&.jconsole\&.JConsolePlugin\fR that contains one line for each plug-in\&. The line specifies the fully qualified class name of the class implementing the \f3com\&.sun\&.tools\&.jconsole\&.JConsolePlugin\fR class\&. +.TP +-version +.br +Displays release information and exits\&. +.TP +-help +.br +Displays a help message\&. +.TP +-J\fIflag\fR +.br +Passes \f3flag\fR to the JVM on which the \f3jconsole\fR command is run\&. +.SH SEE\ ALSO +.TP 0.2i +\(bu +Using JConsole at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/jconsole\&.html +.TP 0.2i +\(bu +Monitoring and Management Using JMX Technology at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/management/agent\&.html +.TP 0.2i +\(bu +The \f3JMXServiceURL\fR class description at http://docs\&.oracle\&.com/javase/8/docs/api/javax/management/remote/JMXServiceURL\&.html +.RE +.br +'pl 8.5i +'bp diff --git a/jdk/src/bsd/doc/man/jdb.1 b/jdk/src/bsd/doc/man/jdb.1 index c746a0ee2b6..4304f15e8a9 100644 --- a/jdk/src/bsd/doc/man/jdb.1 +++ b/jdk/src/bsd/doc/man/jdb.1 @@ -1,330 +1,271 @@ -." Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved. -." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -." -." This code is free software; you can redistribute it and/or modify it -." under the terms of the GNU General Public License version 2 only, as -." published by the Free Software Foundation. -." -." This code is distributed in the hope that it will be useful, but WITHOUT -." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -." version 2 for more details (a copy is included in the LICENSE file that -." accompanied this code). -." -." You should have received a copy of the GNU General Public License version -." 2 along with this work; if not, write to the Free Software Foundation, -." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -." -." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -." or visit www.oracle.com if you need additional information or have any -." questions. -." -.TH jdb 1 "10 May 2011" +'\" t +.\" Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. +.\" +.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +.\" +.\" This code is free software; you can redistribute it and/or modify it +.\" under the terms of the GNU General Public License version 2 only, as +.\" published by the Free Software Foundation. +.\" +.\" This code is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +.\" version 2 for more details (a copy is included in the LICENSE file that +.\" accompanied this code). +.\" +.\" You should have received a copy of the GNU General Public License version +.\" 2 along with this work; if not, write to the Free Software Foundation, +.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +.\" +.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +.\" or visit www.oracle.com if you need additional information or have any +.\" questions. +.\" +.\" Arch: generic +.\" Software: JDK 8 +.\" Date: 21 November 2013 +.\" SectDesc: Basic Tools +.\" Title: jdb.1 +.\" +.if n .pl 99999 +.TH jdb 1 "21 November 2013" "JDK 8" "Basic Tools" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- -.LP -.SH "Name" -jdb \- The Java Debugger -.LP -.LP -\f3jdb\fP helps you find and fix bugs in Java language programs. -.LP -.SH "SYNOPSIS" -.LP -.nf -\f3 -.fl -\fP\f3jdb\fP [ options ] [ class ] [ arguments ] -.fl -.fi +.SH NAME +jdb \- Finds and fixes bugs in Java platform programs\&. +.SH SYNOPSIS +.sp +.nf -.LP -.RS 3 -.TP 3 -options -Command\-line options, as specified below. -.TP 3 -class -Name of the class to begin debugging. -.TP 3 -arguments -Arguments passed to the \f2main()\fP method of \f2class\fP. -.RE - -.LP -.SH "DESCRIPTION" -.LP -.LP -The Java Debugger, \f3jdb\fP, is a simple command\-line debugger for Java classes. It is a demonstration of the -.na -\f2Java Platform Debugger Architecture\fP @ -.fi -http://download.oracle.com/javase/7/docs/technotes/guides/jpda/index.html that provides inspection and debugging of a local or remote Java Virtual Machine. -.LP -.SS -Starting a jdb Session -.LP -.LP -There are many ways to start a jdb session. The most frequently used way is to have \f3jdb\fP launch a new Java Virtual Machine (VM) with the main class of the application to be debugged. This is done by substituting the command \f3jdb\fP for \f3java\fP in the command line. For example, if your application's main class is MyClass, you use the following command to debug it under JDB: -.LP -.nf -\f3 -.fl - % jdb MyClass -.fl -\fP -.fi - -.LP -.LP -When started this way, \f3jdb\fP invokes a second Java VM with any specified parameters, loads the specified class, and stops the VM before executing that class's first instruction. -.LP -.LP -Another way to use \f3jdb\fP is by attaching it to a Java VM that is already running. Syntax for Starting a VM to which jdb will attach when the VM is running is as follows. This loads in\-process debugging libraries and specifies the kind of connection to be made. -.LP -.nf -\f3 -.fl -\-agentlib:jdwp=transport=dt_socket,server=y,suspend=n -.fl -\fP -.fi - -.LP -.LP -For example, the following command will run the MyClass application, and allow \f3jdb\fP to connect to it at a later time. -.LP -.nf -\f3 -.fl - % java \-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n MyClass -.fl -\fP -.fi - -.LP -.LP -You can then attach \f3jdb\fP to the VM with the following commmand: -.LP -.nf -\f3 -.fl - % jdb \-attach 8000 -.fl -\fP -.fi - -.LP -.LP -Note that "MyClass" is not specified in the \f3jdb\fP command line in this case because \f3jdb\fP is connecting to an existing VM instead of launching a new one. -.LP -.LP -There are many other ways to connect the debugger to a VM, and all of them are supported by \f3jdb\fP. The Java Platform Debugger Architecture has additional -.na -\f2documentation\fP @ -.fi -http://download.oracle.com/javase/7/docs/technotes/guides/jpda/conninv.html on these connection options. For information on starting a J2SE 1.4.2 or early VM for use with \f3jdb\fP see the -.na -\f21.4.2 documentation\fP @ -.fi -http://java.sun.com/j2se/1.4.2/docs/guide/jpda/conninv.html -.LP -.SS -Basic jdb Commands -.LP -.LP -The following is a list of the basic \f3jdb\fP commands. The Java debugger supports other commands which you can list using \f3jdb\fP's \f2help\fP command. -.LP -.RS 3 -.TP 3 -help, or ? -The most important \f3jdb\fP command, \f2help\fP displays the list of recognized commands with a brief description. -.TP 3 +\fBjdb\fR [\fIoptions\fR] [\fIclassname\fR] [\fIarguments\fR] +.fi +.sp +.TP +\fIoptions\fR +Command-line options\&. See Options\&. +.TP +\fIclass\fRname +Name of the main class to debug\&. +.TP +\fIarguments\fR +Arguments passed to the \f3main()\fR method of the class\&. +.SH DESCRIPTION +The Java Debugger (JDB) is a simple command-line debugger for Java classes\&. The \f3jdb\fR command and its options call the JDB\&. The \f3jdb\fR command demonstrates the Java Platform Debugger Architecture (JDBA) and provides inspection and debugging of a local or remote Java Virtual Machine (JVM)\&. See Java Platform Debugger Architecture (JDBA) at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html +.SS START\ A\ JDB\ SESSION +There are many ways to start a JDB session\&. The most frequently used way is to have JDB launch a new JVM with the main class of the application to be debugged\&. Do this by substituting the \f3jdb\fR command for the \f3java\fR command in the command line\&. For example, if your application\&'s main class is \f3MyClass\fR, then use the following command to debug it under JDB: +.sp +.nf +\f3jdb MyClass\fP +.fi +.nf +\f3\fP +.fi +.sp +When started this way, the \f3jdb\fR command calls a second JVM with the specified parameters, loads the specified class, and stops the JVM before executing that class\&'s first instruction\&. +.PP +Another way to use the \f3jdb\fR command is by attaching it to a JVM that is already running\&. Syntax for starting a JVM to which the \f3jdb\fR command attaches when the JVM is running is as follows\&. This loads in-process debugging libraries and specifies the kind of connection to be made\&. +.sp +.nf +\f3java \-agentlib:jdwp=transport=dt_socket,server=y,suspend=n MyClass\fP +.fi +.nf +\f3\fP +.fi +.sp +You can then attach the \f3jdb\fR command to the JVM with the following command: +.sp +.nf +\f3jdb \-attach 8000\fP +.fi +.nf +\f3\fP +.fi +.sp +The \f3MyClass\fR argument is not specified in the \f3jdb\fR command line in this case because the \f3jdb\fR command is connecting to an existing JVM instead of launching a new JVM\&. +.PP +There are many other ways to connect the debugger to a JVM, and all of them are supported by the \f3jdb\fR command\&. The Java Platform Debugger Architecture has additional documentation on these connection options\&. +.SS BASIC\ JDB\ COMMANDS +The following is a list of the basic \f3jdb\fR commands\&. The JDB supports other commands that you can list with the \f3-help\fR option\&. +.TP +help or ? +The \f3help\fR or \f3?\fR commands display the list of recognized commands with a brief description\&. +.TP run -After starting \f3jdb\fP, and setting any necessary breakpoints, you can use this command to start the execution the debugged application. This command is available only when \f3jdb\fP launches the debugged application (as opposed to attaching to an existing VM). -.TP 3 +After you start JDB and set breakpoints, you can use the \f3run\fR command to execute the debugged application\&. The \f3run\fR command is available only when the \f3jdb\fR command starts the debugged application as opposed to attaching to an existing JVM\&. +.TP cont -Continues execution of the debugged application after a breakpoint, exception, or step. -.TP 3 +Continues execution of the debugged application after a breakpoint, exception, or step\&. +.TP print -Displays Java objects and primitive values. For variables or fields of primitive types, the actual value is printed. For objects, a short description is printed. See the \f2dump\fP command below for getting more information about an object. -.br -.br -\f2NOTE: To display local variables, the containing class must have been compiled with the \fP\f2javac(1)\fP\f2 \fP\f2\-g\fP option. -.br -.br -\f2print\fP supports many simple Java expressions including those with method invocations, for example: -.RS 3 -.TP 2 -o -\f2print MyClass.myStaticField\fP -.TP 2 -o -\f2print myObj.myInstanceField\fP -.TP 2 -o -\f2print i + j + k\fP \f2(i, j, k are primities and either fields or local variables)\fP -.TP 2 -o -\f2print myObj.myMethod()\fP \f2(if myMethod returns a non\-null)\fP -.TP 2 -o -\f2print new java.lang.String("Hello").length()\fP -.RE -.TP 3 +Displays Java objects and primitive values\&. For variables or fields of primitive types, the actual value is printed\&. For objects, a short description is printed\&. See the dump command to find out how to get more information about an object\&. + +\fINote:\fR To display local variables, the containing class must have been compiled with the \f3javac -g\fR option\&. + +The \f3print\fR command supports many simple Java expressions including those with method invocations, for example: +.sp +.nf +\f3print MyClass\&.myStaticField\fP +.fi +.nf +\f3print myObj\&.myInstanceField\fP +.fi +.nf +\f3print i + j + k (i, j, k are primities and either fields or local variables)\fP +.fi +.nf +\f3print myObj\&.myMethod() (if myMethod returns a non\-null)\fP +.fi +.nf +\f3print new java\&.lang\&.String("Hello")\&.length()\fP +.fi +.nf +\f3\fP +.fi +.sp + +.TP dump -For primitive values, this command is identical to \f2print\fP. For objects, it prints the current value of each field defined in the object. Static and instance fields are included. -.br -.br -The \f2dump\fP command supports the same set of expressions as the \f2print\fP command. -.TP 3 +For primitive values, the \f3dump\fR command is identical to the \f3print\fR command\&. For objects, the \f3dump\fR command prints the current value of each field defined in the object\&. Static and instance fields are included\&. The \f3dump\fR command supports the same set of expressions as the \f3print\fR command\&. +.TP threads -List the threads that are currently running. For each thread, its name and current status are printed, as well as an index that can be used for other commands, for example: -.nf -\f3 -.fl -4. (java.lang.Thread)0x1 main running -.fl -\fP -.fi -In this example, the thread index is 4, the thread is an instance of java.lang.Thread, the thread name is "main", and it is currently running, -.TP 3 +List the threads that are currently running\&. For each thread, its name and current status are printed and an index that can be used in other commands\&. In this example, the thread index is 4, the thread is an instance of \f3java\&.lang\&.Thread\fR, the thread name is \f3main\fR, and it is currently running\&. +.sp +.nf +\f34\&. (java\&.lang\&.Thread)0x1 main running\fP +.fi +.nf +\f3\fP +.fi +.sp + +.TP thread -Select a thread to be the current thread. Many \f3jdb\fP commands are based on the setting of the current thread. The thread is specified with the thread index described in the \f2threads\fP command above. -.TP 3 +Select a thread to be the current thread\&. Many \f3jdb\fR commands are based on the setting of the current thread\&. The thread is specified with the thread index described in the threads command\&. +.TP where -\f2where\fP with no arguments dumps the stack of the current thread. \f2where all\fP dumps the stack of all threads in the current thread group. \f2where\fP \f2threadindex\fP dumps the stack of the specified thread. +The \f3where\fR command with no arguments dumps the stack of the current thread\&. The \f3where\fR\f3all\fR command dumps the stack of all threads in the current thread group\&. The \f3where\fR\f3threadindex\fR command dumps the stack of the specified thread\&. + +If the current thread is suspended either through an event such as a breakpoint or through the \f3suspend\fR command, then local variables and fields can be displayed with the \f3print\fR and \f3dump\fR commands\&. The \f3up\fR and \f3down\fR commands select which stack frame is the current stack frame\&. +.SS BREAKPOINTS +Breakpoints can be set in JDB at line numbers or at the first instruction of a method, for example: +.TP 0.2i +\(bu +The command \f3stop at MyClass:22\fR sets a breakpoint at the first instruction for line 22 of the source file containing \f3MyClass\fR\&. +.TP 0.2i +\(bu +The command \f3stop in java\&.lang\&.String\&.length\fR sets a breakpoint at the beginning of the method \f3java\&.lang\&.String\&.length\fR\&. +.TP 0.2i +\(bu +The command \f3stop in MyClass\&.\fR uses \f3\fR to identify the static initialization code for \f3MyClass\fR\&. +.PP +When a method is overloaded, you must also specify its argument types so that the proper method can be selected for a breakpoint\&. For example, \f3MyClass\&.myMethod(int,java\&.lang\&.String)\fR or \f3MyClass\&.myMethod()\fR\&. +.PP +The \f3clear\fR command removes breakpoints using the following syntax: \f3clear MyClass:45\fR\&. Using the \f3clear\fR or \f3stop\fR command with no argument displays a list of all breakpoints currently set\&. The \f3cont\fR command continues execution\&. +.SS STEPPING +The \f3step\fR command advances execution to the next line whether it is in the current stack frame or a called method\&. The \f3next\fR command advances execution to the next line in the current stack frame\&. +.SS EXCEPTIONS +When an exception occurs for which there is not a \f3catch\fR statement anywhere in the throwing thread\&'s call stack, the JVM typically prints an exception trace and exits\&. When running under JDB, however, control returns to JDB at the offending throw\&. You can then use the \f3jdb\fR command to diagnose the cause of the exception\&. +.PP +Use the \f3catch\fR command to cause the debugged application to stop at other thrown exceptions, for example: \f3catch java\&.io\&.FileNotFoundException\fR or \f3catch\fR\f3mypackage\&.BigTroubleException\fR\&. Any exception that is an instance of the specified class or subclass stops the application at the point where it is thrown\&. +.PP +The \f3ignore\fR command negates the effect of an earlier \f3catch\fR command\&. The \f3ignore\fR command does not cause the debugged JVM to ignore specific exceptions, but only to ignore the debugger\&. +.SH OPTIONS +When you use the \f3jdb\fR command instead of the \f3java\fR command on the command line, the \f3jdb\fR command accepts many of the same options as the \f3java\fR command, including \f3-D\fR, \f3-classpath\fR, and \f3-X\fR options\&. The following list contains additional options that are accepted by the \f3jdb\fR command\&. +.PP +Other options are supported to provide alternate mechanisms for connecting the debugger to the JVM it is to debug\&. For additional documentation about these connection alternatives, see Java Platform Debugger Architecture (JPDA) at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jpda/index\&.html +.TP +-help .br +Displays a help message\&. +.TP +-sourcepath \fIdir1:dir2: \&. \&. \&.\fR .br -If the current thread is suspended (either through an event such as a breakpoint or through the \f2suspend\fP command), local variables and fields can be displayed with the \f2print\fP and \f2dump\fP commands. The \f2up\fP and \f2down\fP commands select which stack frame is current. -.RE - -.LP -.SS -Breakpoints -.LP -.LP -Breakpoints can be set in \f3jdb\fP at line numbers or at the first instruction of a method, for example: -.LP -.RS 3 -.TP 2 -o -\f2stop at MyClass:22\fP \f2(sets a breakpoint at the first instruction for line 22 of the source file containing MyClass)\fP -.TP 2 -o -\f2stop in java.lang.String.length\fP \f2(sets a breakpoint at the beginnig of the method \fP\f2java.lang.String.length\fP) -.TP 2 -o -\f2stop in MyClass.\fP \f2( identifies the MyClass constructor)\fP -.TP 2 -o -\f2stop in MyClass.\fP \f2( identifies the static initialization code for MyClass)\fP -.RE - -.LP -.LP -If a method is overloaded, you must also specify its argument types so that the proper method can be selected for a breakpoint. For example, "\f2MyClass.myMethod(int,java.lang.String)\fP", or "\f2MyClass.myMethod()\fP". -.LP -.LP -The \f2clear\fP command removes breakpoints using a syntax as in "\f2clear\ MyClass:45\fP". Using the \f2clear\fP or command with no argument displays a list of all breakpoints currently set. The \f2cont\fP command continues execution. -.LP -.SS -Stepping -.LP -.LP -The \f2step\fP commands advances execution to the next line whether it is in the current stack frame or a called method. The \f2next\fP command advances execution to the next line in the current stack frame. -.LP -.SS -Exceptions -.LP -.LP -When an exception occurs for which there isn't a catch statement anywhere in the throwing thread's call stack, the VM normally prints an exception trace and exits. When running under \f3jdb\fP, however, control returns to \f3jdb\fP at the offending throw. You can then use \f3jdb\fP to diagnose the cause of the exception. -.LP -.LP -Use the \f2catch\fP command to cause the debugged application to stop at other thrown exceptions, for example: "\f2catch java.io.FileNotFoundException\fP" or "\f2catch mypackage.BigTroubleException\fP. Any exception which is an instance of the specifield class (or of a subclass) will stop the application at the point where it is thrown. -.LP -.LP -The \f2ignore\fP command negates the effect of a previous \f2catch\fP command. -.LP -.LP -\f2NOTE: The \fP\f2ignore\fP command does not cause the debugged VM to ignore specific exceptions, only the debugger. -.LP -.SH "Command Line Options" -.LP -.LP -When you use \f3jdb\fP in place of the Java application launcher on the command line, \f3jdb\fP accepts many of the same options as the java command, including \f2\-D\fP, \f2\-classpath\fP, and \f2\-X

    Swing Components Supporting Action