# HG changeset patch # User herrick # Date 1561120379 14400 # Node ID c84d7dc9e434a3bfe75ab6621a43db7a6fb207f7 # Parent 44c2481650cef2a74f1f9904ce53f15bb67b1fc5# Parent 17ba7ce18564800475c4cfcaf1a04f8e14131ecf Merge diff -r 44c2481650ce -r c84d7dc9e434 .hgtags --- a/.hgtags Fri Jun 21 08:29:09 2019 -0400 +++ b/.hgtags Fri Jun 21 08:32:59 2019 -0400 @@ -565,4 +565,5 @@ 22b3b7983adab54e318f75aeb94471f7a4429c1e jdk-14+0 22b3b7983adab54e318f75aeb94471f7a4429c1e jdk-13+25 2f4e214781a1d597ed36bf5a36f20928c6c82996 jdk-14+1 +0692b67f54621991ba7afbf23e55b788f3555e69 jdk-13+26 43627549a488b7d0b4df8fad436e36233df89877 jdk-14+2 diff -r 44c2481650ce -r c84d7dc9e434 doc/building.md --- a/doc/building.md Fri Jun 21 08:29:09 2019 -0400 +++ b/doc/building.md Fri Jun 21 08:32:59 2019 -0400 @@ -871,6 +871,7 @@ * `CONF_CHECK` * `COMPARE_BUILD` * `JDK_FILTER` + * `SPEC_FILTER` ## Running Tests diff -r 44c2481650ce -r c84d7dc9e434 make/Docs.gmk --- a/make/Docs.gmk Fri Jun 21 08:29:09 2019 -0400 +++ b/make/Docs.gmk Fri Jun 21 08:32:59 2019 -0400 @@ -487,11 +487,25 @@ ################################################################################ +# Use this variable to control which spec files are included in the output. +# Format: space-delimited list of names, including at most one '%' as a +# wildcard. Spec source files match if their filename or any enclosing folder +# name matches one of the items in SPEC_FILTER. +SPEC_FILTER := % + +ApplySpecFilter = \ + $(strip $(foreach file, $(1), \ + $(eval searchkeys := $(subst /, ,$(subst $(WORKSPACE_ROOT),,$(file)))) \ + $(if $(filter $(SPEC_FILTER), $(searchkeys)), \ + $(file) \ + ) \ + )) + # Copy the global resources, including the top-level redirect index.html -GLOBAL_SPECS_RESOURCES_DIR := $(TOPDIR)/make/data/docs-resources/ +GLOBAL_SPECS_RESOURCES_DIR := $(TOPDIR)/make/data/docs-resources $(eval $(call SetupCopyFiles, COPY_GLOBAL_RESOURCES, \ SRC := $(GLOBAL_SPECS_RESOURCES_DIR), \ - FILES := $(call FindFiles, $(GLOBAL_SPECS_RESOURCES_DIR)), \ + FILES := $(call ApplySpecFilter, $(call FindFiles, $(GLOBAL_SPECS_RESOURCES_DIR))), \ DEST := $(DOCS_OUTPUTDIR), \ )) JDK_INDEX_TARGETS += $(COPY_GLOBAL_RESOURCES) @@ -499,7 +513,7 @@ # Copy the legal notices distributed with the docs bundle $(eval $(call SetupCopyFiles, COPY_DOCS_LEGAL_NOTICES, \ SRC := $(TOPDIR)/src/jdk.javadoc/share/legal, \ - FILES := $(wildcard $(TOPDIR)/src/jdk.javadoc/share/legal/*), \ + FILES := $(call ApplySpecFilter, $(wildcard $(TOPDIR)/src/jdk.javadoc/share/legal/*)), \ DEST := $(DOCS_OUTPUTDIR)/legal, \ )) JDK_INDEX_TARGETS += $(COPY_DOCS_LEGAL_NOTICES) @@ -516,10 +530,10 @@ $(foreach m, $(ALL_MODULES), \ $(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \ $(foreach d, $(SPECS_$m), \ - $(if $(filter $(COPY_SPEC_FILTER), $(call FindFiles, $d)), \ + $(if $(call ApplySpecFilter, $(filter $(COPY_SPEC_FILTER), $(call FindFiles, $d))), \ $(eval $(call SetupCopyFiles, COPY_$m, \ SRC := $d, \ - FILES := $(filter $(COPY_SPEC_FILTER), $(call FindFiles, $d)), \ + FILES := $(call ApplySpecFilter, $(filter $(COPY_SPEC_FILTER), $(call FindFiles, $d))), \ DEST := $(DOCS_OUTPUTDIR)/specs/, \ )) \ $(eval JDK_SPECS_TARGETS += $(COPY_$m)) \ @@ -527,31 +541,27 @@ ) \ ) -# Create copyright footer files that can be provided as input to pandoc. We -# need different files for different relative paths to the copyright.html -# file. The number 0-2 below represent how many extra directory levels down -# below the specs dir the specs html file is located. Each file name is -# stored in a variable SPECS_BOTTOM_FILE_$n where $n is 0, 1 or 2. -SPECS_BOTTOM =
$(COPYRIGHT_BOTTOM) +# Create copyright footer variables. We need different variables for different +# relative paths to the copyright.html file. The number 0-2 below represent how +# many extra directory levels down below the specs dir the specs html file is +# located. +SPECS_BOTTOM = # The legal dir is one ../ below the specs dir, so start with one ../. specs_bottom_rel_path := ../ $(foreach n, 0 1 2, \ - $(eval SPECS_BOTTOM_FILE_$n := $(SUPPORT_OUTPUTDIR)/docs/full-specs-bottom-$n.txt) \ $(eval SPECS_BOTTOM_$n := $(call SPECS_BOTTOM,$(specs_bottom_rel_path))) \ - $(eval $(SPECS_BOTTOM_FILE_$n): \ - $(call DependOnVariable, SPECS_BOTTOM_$n) ; \ - $(PRINTF) '$(SPECS_BOTTOM_$n)' > $$@ \ - ) \ $(eval specs_bottom_rel_path := $(specs_bottom_rel_path)../) \ ) +SPECS_TOP := $(if $(filter true, $(IS_DRAFT)),
$(DRAFT_TEXT)
) + # For all html files in $module/share/specs directories, copy and add the # copyright footer. $(foreach m, $(ALL_MODULES), \ $(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \ $(foreach d, $(SPECS_$m), \ - $(foreach f, $(filter %.html, $(call FindFiles, $d)), \ + $(foreach f, $(call ApplySpecFilter, $(filter %.html, $(call FindFiles, $d))), \ $(eval $m_$f_NOF_SUBDIRS := $(words $(subst /, $(SPACE), $(subst $d, , $(dir $f))))) \ $(eval $m_$f_NAME := PROCESS_HTML_$m_$(strip $(call RelativePath, $f, $(TOPDIR)))) \ $(eval $(call SetupTextFileProcessing, $($m_$f_NAME), \ @@ -559,6 +569,7 @@ SOURCE_BASE_DIR := $d, \ OUTPUT_DIR := $(DOCS_OUTPUTDIR)/specs/, \ REPLACEMENTS := \ + => $(SPECS_TOP) ; \ => $(SPECS_BOTTOM_$($m_$f_NOF_SUBDIRS)), \ )) \ $(eval JDK_SPECS_TARGETS += $($($m_$f_NAME))) \ @@ -575,17 +586,16 @@ $(foreach m, $(ALL_MODULES), \ $(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \ $(foreach d, $(SPECS_$m), \ - $(foreach f, $(filter %.md, $(call FindFiles, $d)), \ + $(foreach f, $(call ApplySpecFilter, $(filter %.md, $(call FindFiles, $d))), \ $(eval $m_$f_NOF_SUBDIRS := $(words $(subst /, $(SPACE), $(subst $d, , $(dir $f))))) \ - $(eval $m_$f_BOTTOM_FILE := $(SPECS_BOTTOM_FILE_$($m_$f_NOF_SUBDIRS))) \ $(eval $m_$f_NAME := SPECS_TO_HTML_$m_$(strip $(call RelativePath, $f, $(TOPDIR)))) \ $(eval $(call SetupProcessMarkdown, $($m_$f_NAME), \ SRC := $d, \ FILES := $f, \ DEST := $(DOCS_OUTPUTDIR)/specs/, \ CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \ - OPTIONS := -A $($m_$f_BOTTOM_FILE), \ - EXTRA_DEPS := $($m_$f_BOTTOM_FILE), \ + OPTIONS := -V include-before='$(SPECS_TOP)' -V include-after='$(SPECS_BOTTOM_$($m_$f_NOF_SUBDIRS))', \ + REPLACEMENTS := @@VERSION_STRING@@ => $(VERSION_STRING), \ POST_PROCESS := $(TOOL_FIXUPPANDOC), \ )) \ $(eval JDK_SPECS_TARGETS += $($($m_$f_NAME))) \ @@ -607,7 +617,7 @@ $(foreach m, $(ALL_MODULES), \ $(eval MAN_$m := $(call FindModuleManDirs, $m)) \ $(foreach d, $(MAN_$m), \ - $(foreach f, $(filter %.md, $(call FindFiles, $d)), \ + $(foreach f, $(call ApplySpecFilter, $(filter %.md, $(call FindFiles, $d))), \ $(eval $m_$f_NAME := MAN_TO_HTML_$m_$(strip $(call RelativePath, $f, $(TOPDIR)))) \ $(eval $(call SetupProcessMarkdown, $($m_$f_NAME), \ SRC := $d, \ @@ -616,11 +626,10 @@ FILTER := $(PANDOC_HTML_MANPAGE_FILTER), \ CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \ REPLACEMENTS := @@VERSION_SHORT@@ => $(VERSION_SHORT), \ - OPTIONS := -A $(SPECS_BOTTOM_FILE_1), \ + OPTIONS := -V include-before='$(SPECS_TOP)' -V include-after='$(SPECS_BOTTOM_1)', \ POST_PROCESS := $(TOOL_FIXUPPANDOC), \ EXTRA_DEPS := $(PANDOC_HTML_MANPAGE_FILTER) \ - $(PANDOC_HTML_MANPAGE_FILTER_JAVASCRIPT) \ - $(SPECS_BOTTOM_FILE_1), \ + $(PANDOC_HTML_MANPAGE_FILTER_JAVASCRIPT), \ )) \ $(eval JDK_SPECS_TARGETS += $($($m_$f_NAME))) \ ) \ @@ -634,23 +643,29 @@ # Special treatment for generated documentation JDWP_PROTOCOL := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.jdi/jdwp-protocol.html -$(eval $(call SetupTextFileProcessing, PROCESS_JDWP_PROTOCOL, \ - SOURCE_FILES := $(JDWP_PROTOCOL), \ - OUTPUT_DIR := $(DOCS_OUTPUTDIR)/specs/jdwp, \ - REPLACEMENTS := \ - => $(SPECS_BOTTOM_1), \ -)) -JDK_SPECS_TARGETS += $(PROCESS_JDWP_PROTOCOL) +ifneq ($(call ApplySpecFilter, $(JDWP_PROTOCOL)), ) + $(eval $(call SetupTextFileProcessing, PROCESS_JDWP_PROTOCOL, \ + SOURCE_FILES := $(JDWP_PROTOCOL), \ + OUTPUT_DIR := $(DOCS_OUTPUTDIR)/specs/jdwp, \ + REPLACEMENTS := \ + => $(SPECS_TOP) ; \ + => $(SPECS_BOTTOM_1), \ + )) + JDK_SPECS_TARGETS += $(PROCESS_JDWP_PROTOCOL) +endif # Get jvmti.html from the main jvm variant (all variants' jvmti.html are identical). JVMTI_HTML ?= $(HOTSPOT_OUTPUTDIR)/variant-$(JVM_VARIANT_MAIN)/gensrc/jvmtifiles/jvmti.html -$(eval $(call SetupTextFileProcessing, PROCESS_JVMTI_HTML, \ - SOURCE_FILES := $(JVMTI_HTML), \ - OUTPUT_DIR := $(DOCS_OUTPUTDIR)/specs/, \ - REPLACEMENTS := \ - => $(SPECS_BOTTOM_0), \ -)) -JDK_SPECS_TARGETS += $(PROCESS_JVMTI_HTML) +ifneq ($(call ApplySpecFilter, $(JVMTI_HTML)), ) + $(eval $(call SetupTextFileProcessing, PROCESS_JVMTI_HTML, \ + SOURCE_FILES := $(JVMTI_HTML), \ + OUTPUT_DIR := $(DOCS_OUTPUTDIR)/specs/, \ + REPLACEMENTS := \ + => $(SPECS_TOP) ; \ + => $(SPECS_BOTTOM_0), \ + )) + JDK_SPECS_TARGETS += $(PROCESS_JVMTI_HTML) +endif ################################################################################ # Optional target which bundles all generated javadocs into a zip archive. @@ -672,6 +687,20 @@ $(eval $(call IncludeCustomExtension, Docs-post.gmk)) ################################################################################ +# Bundles all generated specs into a zip archive, skipping javadocs. + +SPECS_ZIP_NAME := jdk-$(VERSION_STRING)-specs.zip +SPECS_ZIP_FILE := $(OUTPUTDIR)/bundles/$(SPECS_ZIP_NAME) + +$(eval $(call SetupZipArchive, BUILD_SPECS_ZIP, \ + SRC := $(DOCS_OUTPUTDIR), \ + ZIP := $(SPECS_ZIP_FILE), \ + EXTRA_DEPS := $(JDK_SPECS_TARGETS), \ +)) + +SPECS_ZIP_TARGETS += $(BUILD_SPECS_ZIP) + +################################################################################ docs-jdk-api-javadoc: $(JDK_API_JAVADOC_TARGETS) $(JDK_API_CUSTOM_TARGETS) @@ -691,11 +720,14 @@ docs-zip: $(ZIP_TARGETS) +docs-specs-zip: $(SPECS_ZIP_TARGETS) + all: docs-jdk-api-javadoc docs-jdk-api-modulegraph docs-javase-api-javadoc \ docs-javase-api-modulegraph docs-reference-api-javadoc \ - docs-reference-api-modulegraph docs-jdk-specs docs-jdk-index docs-zip + docs-reference-api-modulegraph docs-jdk-specs docs-jdk-index docs-zip \ + docs-specs-zip .PHONY: default all docs-jdk-api-javadoc docs-jdk-api-modulegraph \ docs-javase-api-javadoc docs-javase-api-modulegraph \ docs-reference-api-javadoc docs-reference-api-modulegraph docs-jdk-specs \ - docs-jdk-index docs-zip + docs-jdk-index docs-zip docs-specs-zip diff -r 44c2481650ce -r c84d7dc9e434 make/InitSupport.gmk --- a/make/InitSupport.gmk Fri Jun 21 08:29:09 2019 -0400 +++ b/make/InitSupport.gmk Fri Jun 21 08:32:59 2019 -0400 @@ -53,7 +53,7 @@ COMPARE_BUILD JTREG GTEST MICRO TEST_OPTS TEST_VM_OPTS # All known make control variables - MAKE_CONTROL_VARIABLES := $(INIT_CONTROL_VARIABLES) TEST JDK_FILTER + MAKE_CONTROL_VARIABLES := $(INIT_CONTROL_VARIABLES) TEST JDK_FILTER SPEC_FILTER # Define a simple reverse function. # Should maybe move to MakeBase.gmk, but we can't include that file now. diff -r 44c2481650ce -r c84d7dc9e434 make/Main.gmk --- a/make/Main.gmk Fri Jun 21 08:29:09 2019 -0400 +++ b/make/Main.gmk Fri Jun 21 08:32:59 2019 -0400 @@ -427,6 +427,9 @@ docs-zip: +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-zip) +docs-specs-zip: + +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-specs-zip) + update-build-docs: +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UpdateBuildDocs.gmk) @@ -436,7 +439,7 @@ ALL_TARGETS += docs-jdk-api-javadoc docs-jdk-api-modulegraph \ docs-javase-api-javadoc docs-javase-api-modulegraph \ docs-reference-api-javadoc docs-reference-api-modulegraph docs-jdk-specs \ - docs-jdk-index docs-zip update-build-docs update-x11wrappers + docs-jdk-index docs-zip docs-specs-zip update-build-docs update-x11wrappers ################################################################################ # Cross compilation support @@ -885,6 +888,8 @@ docs-zip: docs-jdk + docs-specs-zip: docs-jdk-specs + # Tests test: jdk-image test-image diff -r 44c2481650ce -r c84d7dc9e434 make/autoconf/bootcycle-spec.gmk.in --- a/make/autoconf/bootcycle-spec.gmk.in Fri Jun 21 08:29:09 2019 -0400 +++ b/make/autoconf/bootcycle-spec.gmk.in Fri Jun 21 08:32:59 2019 -0400 @@ -62,3 +62,7 @@ endif # The bootcycle JVM arguments may differ from the original boot jdk. JAVA_FLAGS_BIG := @BOOTCYCLE_JVM_ARGS_BIG@ +# Any CDS settings generated for the bootjdk are invalid in the bootcycle build. +# By filtering out those JVM args, the bootcycle JVM will use its default +# settings for CDS. +JAVA_FLAGS := $(filter-out -XX:SharedArchiveFile% -Xshare%, $(JAVA_FLAGS)) diff -r 44c2481650ce -r c84d7dc9e434 make/data/docs-resources/resources/jdk-default.css --- a/make/data/docs-resources/resources/jdk-default.css Fri Jun 21 08:29:09 2019 -0400 +++ b/make/data/docs-resources/resources/jdk-default.css Fri Jun 21 08:32:59 2019 -0400 @@ -25,7 +25,7 @@ body { margin: 2em 2em; - font-family: DejaVu Sans, Bitstream Vera Sans, Luxi Sans, Verdana, Arial, Helvetica; + font-family: DejaVu Sans, Bitstream Vera Sans, Luxi Sans, Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 1.4; } @@ -68,12 +68,23 @@ margin: 1.5ex 0pt 1ex 0pt; } -h4 { +h4, h5 { + font-size: 100%; font-weight: bold; padding: 0pt; margin: 1.5ex 0pt 1ex 0pt; } +.subtitle { + font-style: italic; + font-weight: bold; + margin-bottom: 1em; +} + +h1.title + .subtitle { + margin-top: -1em; +} + a:link { color: #4A6782; } @@ -138,3 +149,16 @@ .centered { text-align: center; } + +.draft-header { + text-align: center; + font-size: 80%; + padding: 6px; + margin: -2.5em -2.5em 2.5em -2.5em; + background-color: #CBDAE4; +} + +.legal-footer { + font-style: italic; + font-size: 80%; +} diff -r 44c2481650ce -r c84d7dc9e434 src/hotspot/os/linux/perfMemory_linux.cpp --- a/src/hotspot/os/linux/perfMemory_linux.cpp Fri Jun 21 08:29:09 2019 -0400 +++ b/src/hotspot/os/linux/perfMemory_linux.cpp Fri Jun 21 08:32:59 2019 -0400 @@ -661,7 +661,7 @@ if (fp) { int pid, nspid; int ret; - while (!feof(fp)) { + while (!feof(fp) && !ferror(fp)) { ret = fscanf(fp, "NSpid: %d %d", &pid, &nspid); if (ret == 1) { break; diff -r 44c2481650ce -r c84d7dc9e434 src/hotspot/share/code/nmethod.cpp --- a/src/hotspot/share/code/nmethod.cpp Fri Jun 21 08:29:09 2019 -0400 +++ b/src/hotspot/share/code/nmethod.cpp Fri Jun 21 08:32:59 2019 -0400 @@ -1473,6 +1473,13 @@ return NativeAccess::oop_load(oop_addr_at(index)); } +oop nmethod::oop_at_phantom(int index) const { + if (index == 0) { + return NULL; + } + return NativeAccess::oop_load(oop_addr_at(index)); +} + // // Notify all classes this nmethod is dependent on that it is no // longer dependent. This should only be called in two situations. diff -r 44c2481650ce -r c84d7dc9e434 src/hotspot/share/code/nmethod.hpp --- a/src/hotspot/share/code/nmethod.hpp Fri Jun 21 08:29:09 2019 -0400 +++ b/src/hotspot/share/code/nmethod.hpp Fri Jun 21 08:32:59 2019 -0400 @@ -392,6 +392,7 @@ // Support for oops in scopes and relocs: // Note: index 0 is reserved for null. oop oop_at(int index) const; + oop oop_at_phantom(int index) const; // phantom reference oop* oop_addr_at(int index) const { // for GC // relocation indexes are biased by 1 (because 0 is reserved) assert(index > 0 && index <= oops_count(), "must be a valid non-zero index"); diff -r 44c2481650ce -r c84d7dc9e434 src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp --- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp Fri Jun 21 08:29:09 2019 -0400 +++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp Fri Jun 21 08:32:59 2019 -0400 @@ -152,7 +152,7 @@ } _thread_roots.oops_do(oops, NULL, worker_id); - _cld_roots.clds_do(&clds, &clds, worker_id); + _cld_roots.cld_do(&clds, worker_id); _code_roots.code_blobs_do(&blobsCl, worker_id); _weak_roots.oops_do(&always_true, oops, worker_id); @@ -182,7 +182,7 @@ _jni_roots.oops_do(oops, worker_id); _thread_roots.oops_do(oops, NULL, worker_id); - _cld_roots.clds_do(&adjust_cld_closure, NULL, worker_id); + _cld_roots.cld_do(&adjust_cld_closure, worker_id); _code_roots.code_blobs_do(&adjust_code_closure, worker_id); _weak_roots.oops_do(&always_true, oops, worker_id); @@ -204,7 +204,7 @@ _serial_roots.oops_do(oops, 0); _jni_roots.oops_do(oops, 0); - _cld_roots.clds_do(&clds, &clds, 0); + _cld_roots.cld_do(&clds, 0); _thread_roots.threads_do(&tc_cl, 0); _code_roots.code_blobs_do(&code, 0); } @@ -219,6 +219,6 @@ _serial_roots.oops_do(oops, 0); _jni_roots.oops_do(oops, 0); - _cld_roots.clds_do(&clds, NULL, 0); + _cld_roots.always_strong_cld_do(&clds, 0); _thread_roots.threads_do(&tc_cl, 0); } diff -r 44c2481650ce -r c84d7dc9e434 src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp --- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp Fri Jun 21 08:29:09 2019 -0400 +++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp Fri Jun 21 08:32:59 2019 -0400 @@ -119,7 +119,8 @@ public: ShenandoahClassLoaderDataRoots(); - void clds_do(CLDClosure* strong_clds, CLDClosure* weak_clds, uint worker_id); + void always_strong_cld_do(CLDClosure* clds, uint worker_id); + void cld_do(CLDClosure* clds, uint worker_id); }; class ShenandoahRootProcessor : public StackObj { diff -r 44c2481650ce -r c84d7dc9e434 src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp --- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp Fri Jun 21 08:29:09 2019 -0400 +++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp Fri Jun 21 08:32:59 2019 -0400 @@ -63,16 +63,28 @@ } template -void ShenandoahClassLoaderDataRoots::clds_do(CLDClosure* strong_clds, CLDClosure* weak_clds, uint worker_id) { +void ShenandoahClassLoaderDataRoots::always_strong_cld_do(CLDClosure* clds, uint worker_id) { if (SINGLE_THREADED) { assert(SafepointSynchronize::is_at_safepoint(), "Must be at a safepoint"); assert(Thread::current()->is_VM_thread(), "Single threaded CLDG iteration can only be done by VM thread"); + ClassLoaderDataGraph::always_strong_cld_do(clds); + } else { + ShenandoahWorkerTimings* worker_times = ShenandoahHeap::heap()->phase_timings()->worker_times(); + ShenandoahWorkerTimingsTracker timer(worker_times, ShenandoahPhaseTimings::CLDGRoots, worker_id); + ClassLoaderDataGraph::always_strong_cld_do(clds); + } +} - ClassLoaderDataGraph::roots_cld_do(strong_clds, weak_clds); +template +void ShenandoahClassLoaderDataRoots::cld_do(CLDClosure* clds, uint worker_id) { + if (SINGLE_THREADED) { + assert(SafepointSynchronize::is_at_safepoint(), "Must be at a safepoint"); + assert(Thread::current()->is_VM_thread(), "Single threaded CLDG iteration can only be done by VM thread"); + ClassLoaderDataGraph::cld_do(clds); } else { ShenandoahWorkerTimings* worker_times = ShenandoahHeap::heap()->phase_timings()->worker_times(); ShenandoahWorkerTimingsTracker timer(worker_times, ShenandoahPhaseTimings::CLDGRoots, worker_id); - ClassLoaderDataGraph::roots_cld_do(strong_clds, weak_clds); + ClassLoaderDataGraph::cld_do(clds); } } @@ -141,7 +153,13 @@ _serial_roots.oops_do(oops, worker_id); _jni_roots.oops_do(oops, worker_id); - _cld_roots.clds_do(clds, clds, worker_id); + + if (clds != NULL) { + _cld_roots.cld_do(clds, worker_id); + } else { + assert(ShenandoahHeap::heap()->is_concurrent_traversal_in_progress(), "Only possible with traversal GC"); + } + _thread_roots.threads_do(&tc_cl, worker_id); // With ShenandoahConcurrentScanCodeRoots, we avoid scanning the entire code cache here, @@ -160,7 +178,7 @@ _serial_roots.oops_do(oops, worker_id); _jni_roots.oops_do(oops, worker_id); - _cld_roots.clds_do(clds, NULL, worker_id); + _cld_roots.always_strong_cld_do(clds, worker_id); _thread_roots.threads_do(&tc_cl, worker_id); } @@ -168,13 +186,12 @@ void ShenandoahRootUpdater::roots_do(uint worker_id, IsAlive* is_alive, KeepAlive* keep_alive) { CodeBlobToOopClosure update_blobs(keep_alive, CodeBlobToOopClosure::FixRelocations); CLDToOopClosure clds(keep_alive, ClassLoaderData::_claim_strong); - CLDToOopClosure* weak_clds = ShenandoahHeap::heap()->unload_classes() ? NULL : &clds; _serial_roots.oops_do(keep_alive, worker_id); _jni_roots.oops_do(keep_alive, worker_id); _thread_roots.oops_do(keep_alive, NULL, worker_id); - _cld_roots.clds_do(&clds, weak_clds, worker_id); + _cld_roots.cld_do(&clds, worker_id); if(_update_code_cache) { _code_roots.code_blobs_do(&update_blobs, worker_id); diff -r 44c2481650ce -r c84d7dc9e434 src/hotspot/share/jvmci/jvmciCompilerToVM.cpp --- a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp Fri Jun 21 08:29:09 2019 -0400 +++ b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp Fri Jun 21 08:32:59 2019 -0400 @@ -2416,7 +2416,7 @@ if (peerEnv->is_hotspot()) { // Only the mirror in the HotSpot heap is accessible // through JVMCINMethodData - oop nmethod_mirror = data->get_nmethod_mirror(nm); + oop nmethod_mirror = data->get_nmethod_mirror(nm, /* phantom_ref */ true); if (nmethod_mirror != NULL) { result = HotSpotJVMCI::wrap(nmethod_mirror); } @@ -2443,7 +2443,7 @@ if (data == NULL) { JVMCI_THROW_MSG_0(IllegalArgumentException, "Cannot set HotSpotNmethod mirror for default nmethod"); } - if (data->get_nmethod_mirror(nm) != NULL) { + if (data->get_nmethod_mirror(nm, /* phantom_ref */ false) != NULL) { JVMCI_THROW_MSG_0(IllegalArgumentException, "Cannot overwrite existing HotSpotNmethod mirror for nmethod"); } oop nmethod_mirror = HotSpotJVMCI::resolve(result); diff -r 44c2481650ce -r c84d7dc9e434 src/hotspot/share/jvmci/jvmciRuntime.cpp --- a/src/hotspot/share/jvmci/jvmciRuntime.cpp Fri Jun 21 08:29:09 2019 -0400 +++ b/src/hotspot/share/jvmci/jvmciRuntime.cpp Fri Jun 21 08:32:59 2019 -0400 @@ -700,11 +700,15 @@ FailedSpeculation::add_failed_speculation(nm, _failed_speculations, data, length); } -oop JVMCINMethodData::get_nmethod_mirror(nmethod* nm) { +oop JVMCINMethodData::get_nmethod_mirror(nmethod* nm, bool phantom_ref) { if (_nmethod_mirror_index == -1) { return NULL; } - return nm->oop_at(_nmethod_mirror_index); + if (phantom_ref) { + return nm->oop_at_phantom(_nmethod_mirror_index); + } else { + return nm->oop_at(_nmethod_mirror_index); + } } void JVMCINMethodData::set_nmethod_mirror(nmethod* nm, oop new_mirror) { @@ -728,7 +732,7 @@ } void JVMCINMethodData::invalidate_nmethod_mirror(nmethod* nm) { - oop nmethod_mirror = get_nmethod_mirror(nm); + oop nmethod_mirror = get_nmethod_mirror(nm, /* phantom_ref */ true); if (nmethod_mirror == NULL) { return; } @@ -1530,7 +1534,7 @@ JVMCINMethodData* data = nm->jvmci_nmethod_data(); assert(data != NULL, "must be"); if (install_default) { - assert(!nmethod_mirror.is_hotspot() || data->get_nmethod_mirror(nm) == NULL, "must be"); + assert(!nmethod_mirror.is_hotspot() || data->get_nmethod_mirror(nm, /* phantom_ref */ false) == NULL, "must be"); if (entry_bci == InvocationEntryBci) { if (TieredCompilation) { // If there is an old version we're done with it @@ -1565,7 +1569,7 @@ InstanceKlass::cast(method->method_holder())->add_osr_nmethod(nm); } } else { - assert(!nmethod_mirror.is_hotspot() || data->get_nmethod_mirror(nm) == HotSpotJVMCI::resolve(nmethod_mirror), "must be"); + assert(!nmethod_mirror.is_hotspot() || data->get_nmethod_mirror(nm, /* phantom_ref */ false) == HotSpotJVMCI::resolve(nmethod_mirror), "must be"); } nm->make_in_use(); } diff -r 44c2481650ce -r c84d7dc9e434 src/hotspot/share/jvmci/jvmciRuntime.hpp --- a/src/hotspot/share/jvmci/jvmciRuntime.hpp Fri Jun 21 08:29:09 2019 -0400 +++ b/src/hotspot/share/jvmci/jvmciRuntime.hpp Fri Jun 21 08:32:59 2019 -0400 @@ -74,7 +74,7 @@ void invalidate_nmethod_mirror(nmethod* nm); // Gets the mirror from nm's oops table. - oop get_nmethod_mirror(nmethod* nm); + oop get_nmethod_mirror(nmethod* nm, bool phantom_ref); // Sets the mirror in nm's oops table. void set_nmethod_mirror(nmethod* nm, oop mirror); diff -r 44c2481650ce -r c84d7dc9e434 src/java.base/share/classes/java/security/cert/X509CertSelector.java --- a/src/java.base/share/classes/java/security/cert/X509CertSelector.java Fri Jun 21 08:29:09 2019 -0400 +++ b/src/java.base/share/classes/java/security/cert/X509CertSelector.java Fri Jun 21 08:32:59 2019 -0400 @@ -2115,8 +2115,11 @@ if (certSubjectKeyID == null || !Arrays.equals(subjectKeyID, certSubjectKeyID)) { if (debug != null) { - debug.println("X509CertSelector.match: " - + "subject key IDs don't match"); + debug.println("X509CertSelector.match: subject key IDs " + + "don't match\nX509CertSelector.match: subjectKeyID: " + + Arrays.toString(subjectKeyID) + + "\nX509CertSelector.match: certSubjectKeyID: " + + Arrays.toString(certSubjectKeyID)); } return false; } diff -r 44c2481650ce -r c84d7dc9e434 src/java.base/share/classes/java/time/format/DateTimeFormatter.java --- a/src/java.base/share/classes/java/time/format/DateTimeFormatter.java Fri Jun 21 08:29:09 2019 -0400 +++ b/src/java.base/share/classes/java/time/format/DateTimeFormatter.java Fri Jun 21 08:32:59 2019 -0400 @@ -396,15 +396,16 @@ * 'Z' when the offset to be output would be zero, whereas pattern letter 'x' * (lower case) will output '+00', '+0000', or '+00:00'. *

- * Offset O: This formats the localized offset based on the number of - * pattern letters. One letter outputs the {@linkplain TextStyle#SHORT short} - * form of the localized offset, which is localized offset text, such as 'GMT', - * with hour without leading zero, optional 2-digit minute and second if - * non-zero, and colon, for example 'GMT+8'. Four letters outputs the - * {@linkplain TextStyle#FULL full} form, which is localized offset text, - * such as 'GMT, with 2-digit hour and minute field, optional second field - * if non-zero, and colon, for example 'GMT+08:00'. Any other count of letters - * throws {@code IllegalArgumentException}. + * Offset O: With a non-zero offset, this formats the localized offset + * based on the number of pattern letters. One letter outputs the + * {@linkplain TextStyle#SHORT short} form of the localized offset, which is + * localized offset text, such as 'GMT', with hour without leading zero, optional + * 2-digit minute and second if non-zero, and colon, for example 'GMT+8'. Four + * letters outputs the {@linkplain TextStyle#FULL full} form, which is localized + * offset text, such as 'GMT, with 2-digit hour and minute field, optional second + * field if non-zero, and colon, for example 'GMT+08:00'. If the offset is zero, + * only localized text is output. Any other count of letters throws + * {@code IllegalArgumentException}. *

* Offset Z: This formats the offset based on the number of pattern * letters. One, two or three letters outputs the hour and minute, without a diff -r 44c2481650ce -r c84d7dc9e434 src/java.base/share/classes/sun/security/ssl/SignatureScheme.java --- a/src/java.base/share/classes/sun/security/ssl/SignatureScheme.java Fri Jun 21 08:29:09 2019 -0400 +++ b/src/java.base/share/classes/sun/security/ssl/SignatureScheme.java Fri Jun 21 08:32:59 2019 -0400 @@ -39,6 +39,7 @@ import java.util.List; import java.util.Set; import sun.security.ssl.NamedGroup.NamedGroupType; +import sun.security.ssl.SupportedGroupsExtension.SupportedGroups; import sun.security.ssl.X509Authentication.X509Possession; import sun.security.util.KeyUtil; import sun.security.util.SignatureUtil; @@ -440,6 +441,39 @@ ss.namedGroup == NamedGroup.valueOf(params)) { return ss; } + + if (SSLLogger.isOn && + SSLLogger.isOn("ssl,handshake,verbose")) { + SSLLogger.finest( + "Ignore the signature algorithm (" + ss + + "), unsupported EC parameter spec: " + params); + } + } else if ("EC".equals(ss.keyAlgorithm)) { + // Must be a legacy signature algorithm, which does not + // specify the associated named groups. The connection + // cannot be established if the peer cannot recognize + // the named group used for the signature. RFC 8446 + // does not define countermeasures for the corner cases. + // In order to mitigate the impact, we choose to check + // against the local supported named groups. The risk + // should be minimal as applications should not use + // unsupported named groups for its certificates. + ECParameterSpec params = + x509Possession.getECParameterSpec(); + if (params != null) { + NamedGroup keyGroup = NamedGroup.valueOf(params); + if (keyGroup != null && + SupportedGroups.isSupported(keyGroup)) { + return ss; + } + } + + if (SSLLogger.isOn && + SSLLogger.isOn("ssl,handshake,verbose")) { + SSLLogger.finest( + "Ignore the legacy signature algorithm (" + ss + + "), unsupported EC parameter spec: " + params); + } } else { return ss; } diff -r 44c2481650ce -r c84d7dc9e434 src/java.base/share/classes/sun/security/ssl/X509Authentication.java --- a/src/java.base/share/classes/sun/security/ssl/X509Authentication.java Fri Jun 21 08:29:09 2019 -0400 +++ b/src/java.base/share/classes/sun/security/ssl/X509Authentication.java Fri Jun 21 08:32:59 2019 -0400 @@ -69,7 +69,7 @@ final String keyType; final SSLPossessionGenerator possessionGenerator; - X509Authentication(String keyType, + private X509Authentication(String keyType, SSLPossessionGenerator possessionGenerator) { this.keyType = keyType; this.possessionGenerator = possessionGenerator; @@ -326,10 +326,12 @@ return null; } - // For ECC certs, check whether we support the EC domain - // parameters. If the client sent a SupportedEllipticCurves - // ClientHello extension, check against that too. - if (keyType.equals("EC")) { + // For TLS 1.2 and prior versions, the public key of a EC cert + // MUST use a curve and point format supported by the client. + // But for TLS 1.3, signature algorithms are negotiated + // independently via the "signature_algorithms" extension. + if (!shc.negotiatedProtocol.useTLS13PlusSpec() && + keyType.equals("EC")) { if (!(serverPublicKey instanceof ECPublicKey)) { if (SSLLogger.isOn && SSLLogger.isOn("ssl")) { SSLLogger.warning(serverAlias + @@ -339,8 +341,9 @@ } // For ECC certs, check whether we support the EC domain - // parameters. If the client sent a SupportedEllipticCurves - // ClientHello extension, check against that too. + // parameters. If the client sent a supported_groups + // ClientHello extension, check against that too for + // TLS 1.2 and prior versions. ECParameterSpec params = ((ECPublicKey)serverPublicKey).getParams(); NamedGroup namedGroup = NamedGroup.valueOf(params); diff -r 44c2481650ce -r c84d7dc9e434 src/java.naming/share/classes/com/sun/jndi/ldap/Connection.java --- a/src/java.naming/share/classes/com/sun/jndi/ldap/Connection.java Fri Jun 21 08:29:09 2019 -0400 +++ b/src/java.naming/share/classes/com/sun/jndi/ldap/Connection.java Fri Jun 21 08:32:59 2019 -0400 @@ -411,6 +411,14 @@ BerDecoder readReply(LdapRequest ldr) throws IOException, NamingException { BerDecoder rber; + // If socket closed, don't even try + synchronized (this) { + if (sock == null) { + throw new ServiceUnavailableException(host + ":" + port + + "; socket closed"); + } + } + try { // if no timeout is set so we wait infinitely until // a response is received diff -r 44c2481650ce -r c84d7dc9e434 src/java.sql/share/classes/java/sql/ConnectionBuilder.java --- a/src/java.sql/share/classes/java/sql/ConnectionBuilder.java Fri Jun 21 08:29:09 2019 -0400 +++ b/src/java.sql/share/classes/java/sql/ConnectionBuilder.java Fri Jun 21 08:32:59 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,8 +44,8 @@ * Connection con = ds.createConnectionBuilder() * .user("rafa") * .password("tennis") - * .setShardingKey(shardingKey) - * .setSuperShardingKey(superShardingKey) + * .shardingKey(shardingKey) + * .superShardingKey(superShardingKey) * .build(); * } * diff -r 44c2481650ce -r c84d7dc9e434 src/java.sql/share/classes/javax/sql/PooledConnectionBuilder.java --- a/src/java.sql/share/classes/javax/sql/PooledConnectionBuilder.java Fri Jun 21 08:29:09 2019 -0400 +++ b/src/java.sql/share/classes/javax/sql/PooledConnectionBuilder.java Fri Jun 21 08:32:59 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,8 +47,8 @@ * PooledConnection con = ds.createPooledConnectionBuilder() * .user("rafa") * .password("tennis") - * .setShardingKey(shardingKey) - * .setSuperShardingKey(superShardingKey) + * .shardingKey(shardingKey) + * .superShardingKey(superShardingKey) * .build(); * } * diff -r 44c2481650ce -r c84d7dc9e434 src/java.sql/share/classes/javax/sql/XAConnectionBuilder.java --- a/src/java.sql/share/classes/javax/sql/XAConnectionBuilder.java Fri Jun 21 08:29:09 2019 -0400 +++ b/src/java.sql/share/classes/javax/sql/XAConnectionBuilder.java Fri Jun 21 08:32:59 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,8 +47,8 @@ * XAConnection con = ds.createXAConnectionBuilder() * .user("rafa") * .password("tennis") - * .setShardingKey(shardingKey) - * .setSuperShardingKey(superShardingKey) + * .shardingKey(shardingKey) + * .superShardingKey(superShardingKey) * .build(); * } * diff -r 44c2481650ce -r c84d7dc9e434 src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties Fri Jun 21 08:29:09 2019 -0400 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties Fri Jun 21 08:32:59 2019 -0400 @@ -80,11 +80,11 @@ javac.opt.profile=\ Check that API used is available in the specified profile javac.opt.target=\ - Generate class files for specific VM version. Supported versions: {0} + Generate class files suitable for the specified Java SE release. Supported releases: {0} javac.opt.release=\ - Compile for a specific release. Supported releases: {0} + Compile for the specified Java SE release. Supported releases: {0} javac.opt.source=\ - Provide source compatibility with specified release. Supported releases: {0} + Provide source compatibility with the specified Java SE release. Supported releases: {0} javac.opt.Werror=\ Terminate compilation if warnings occur javac.opt.A=\ diff -r 44c2481650ce -r c84d7dc9e434 src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java Fri Jun 21 08:29:09 2019 -0400 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java Fri Jun 21 08:32:59 2019 -0400 @@ -43,7 +43,6 @@ altColor, annotations, arguments, - bar, block, blockList, bottomNav, @@ -69,7 +68,6 @@ descfrmTypeLabel, details, detail, - docSummary, emphasizedPhrase, exceptions, externalLink, @@ -80,18 +78,11 @@ helpSection, hierarchy, horizontal, - footer, implementationLabel, - indexContainer, - indexNav, inheritance, inheritedList, interfaceName, - leftContainer, - leftTop, - leftBottom, legalCopy, - mainContainer, memberDetails, memberName, memberNameLabel, @@ -99,7 +90,6 @@ memberSignature, memberSummary, methodDetails, - methodSignature, methodSummary, modifiers, moduleDescription, @@ -128,8 +118,6 @@ requiresSummary, returnLabel, returnType, - rightContainer, - rightIframe, rowColor, searchTagLink, searchTagResult, diff -r 44c2481650ce -r c84d7dc9e434 src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css Fri Jun 21 08:29:09 2019 -0400 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css Fri Jun 21 08:32:59 2019 -0400 @@ -121,13 +121,6 @@ .legalCopy { margin-left:.5em; } -.bar a, .bar a:link, .bar a:visited, .bar a:active { - color:#FFFFFF; - text-decoration:none; -} -.bar a:hover, .bar a:focus { - color:#bb7a2a; -} .tab { background-color:#0066FF; color:#ffffff; @@ -138,14 +131,6 @@ /* * Styles for navigation bar. */ -.bar { - background-color:#4D7A97; - color:#FFFFFF; - padding:.8em .5em .4em .8em; - height:auto;/*height:1.8em;*/ - font-size:11px; - margin:0; -} .navPadding { padding-top: 107px; } @@ -246,29 +231,11 @@ /* * Styles for page header and footer. */ -.header, .footer { +.header { clear:both; margin:0 20px; padding:5px 0 0 0; } -.indexNav { - position:relative; - font-size:12px; - background-color:#dee3e9; -} -.indexNav ul { - margin-top:0; - padding:5px; -} -.indexNav ul li { - display:inline; - list-style-type:none; - padding-right:10px; - text-transform:uppercase; -} -.indexNav h1 { - font-size:13px; -} .title { color:#2c4557; margin:10px 0; @@ -280,9 +247,6 @@ margin:0 0 15px 0; padding:0; } -.footer ul { - margin:20px 0 5px 0; -} .header ul li, .footer ul li { list-style:none; font-size:13px; @@ -315,23 +279,6 @@ padding:10px 20px; position:relative; } -.indexContainer { - margin:10px; - position:relative; - font-size:12px; -} -.indexContainer h2 { - font-size:13px; - padding:0 0 3px 0; -} -.indexContainer ul { - margin:0; - padding:0; -} -.indexContainer ul li { - list-style:none; - padding-top:2px; -} .contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { font-size:12px; font-weight:bold; @@ -558,9 +505,6 @@ margin:0; padding:10px 0; } -.docSummary { - padding:0; -} div.block { font-size:14px; font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; @@ -632,61 +576,6 @@ font-style:normal; } /* - * Styles for IFRAME. - */ -.mainContainer { - margin:0 auto; - padding:0; - height:100%; - width:100%; - position:fixed; - top:0; - left:0; -} -.leftContainer { - height:100%; - position:fixed; - width:320px; -} -.leftTop { - position:relative; - float:left; - width:315px; - top:0; - left:0; - height:30%; - border-right:6px solid #ccc; - border-bottom:6px solid #ccc; -} -.leftBottom { - position:relative; - float:left; - width:315px; - bottom:0; - left:0; - height:70%; - border-right:6px solid #ccc; - border-top:1px solid #000; -} -.rightContainer { - position:absolute; - left:320px; - top:0; - bottom:0; - height:100%; - right:0; - border-left:1px solid #000; -} -.rightIframe { - margin:0; - padding:0; - height:100%; - right:30px; - width:100%; - overflow:visible; - margin-bottom:30px; -} -/* * Styles specific to HTML5 elements. */ main, nav, header, footer, section { @@ -772,9 +661,6 @@ margin: -100px 0 0 100px; z-index: 1; } -.methodSignature { - white-space:normal; -} .inheritedList { margin: 10px 0 10px 0; } diff -r 44c2481650ce -r c84d7dc9e434 test/hotspot/jtreg/ProblemList-aot.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/hotspot/jtreg/ProblemList-aot.txt Fri Jun 21 08:32:59 2019 -0400 @@ -0,0 +1,74 @@ +# +# Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +############################################################################# +# +# List of quarantined tests for testing with AOT. +# +############################################################################# + +serviceability/sa/CDSJMapClstats.java 8216181 generic-all +serviceability/sa/ClhsdbAttach.java 8216181 generic-all +serviceability/sa/ClhsdbCDSCore.java 8216181 generic-all +serviceability/sa/ClhsdbCDSJstackPrintAll.java 8216181 generic-all +serviceability/sa/ClhsdbField.java 8216181 generic-all +serviceability/sa/ClhsdbFindPC.java 8216181 generic-all +serviceability/sa/ClhsdbFlags.java 8216181 generic-all +serviceability/sa/ClhsdbInspect.java 8216181 generic-all +serviceability/sa/ClhsdbJdis.java 8216181 generic-all +serviceability/sa/ClhsdbJhisto.java 8216181 generic-all +serviceability/sa/ClhsdbJstack.java 8216181 generic-all +serviceability/sa/ClhsdbLongConstant.java 8216181 generic-all +serviceability/sa/ClhsdbPmap.java 8216181 generic-all +serviceability/sa/ClhsdbPrintAll.java 8216181 generic-all +serviceability/sa/ClhsdbPrintAs.java 8216181 generic-all +serviceability/sa/ClhsdbPrintStatics.java 8216181 generic-all +serviceability/sa/ClhsdbPstack.java 8216181 generic-all +serviceability/sa/ClhsdbRegionDetailsScanOopsForG1.java 8216181 generic-all +serviceability/sa/ClhsdbScanOops.java 8216181 generic-all +serviceability/sa/ClhsdbSource.java 8216181 generic-all +serviceability/sa/ClhsdbThread.java 8216181 generic-all +serviceability/sa/ClhsdbVmStructsDump.java 8216181 generic-all +serviceability/sa/ClhsdbWhere.java 8216181 generic-all +serviceability/sa/DeadlockDetectionTest.java 8216181 generic-all +serviceability/sa/JhsdbThreadInfoTest.java 8216181 generic-all +serviceability/sa/jmap-hprof/JMapHProfLargeHeapTest.java 8216181 generic-all +serviceability/sa/sadebugd/SADebugDTest.java 8216181 generic-all +serviceability/sa/TestClassDump.java 8216181 generic-all +serviceability/sa/TestClhsdbJstackLock.java 8216181 generic-all +serviceability/sa/TestCpoolForInvokeDynamic.java 8216181 generic-all +serviceability/sa/TestDefaultMethods.java 8216181 generic-all +serviceability/sa/TestG1HeapRegion.java 8216181 generic-all +serviceability/sa/TestHeapDumpForInvokeDynamic.java 8216181 generic-all +serviceability/sa/TestHeapDumpForLargeArray.java 8216181 generic-all +serviceability/sa/TestInstanceKlassSizeForInterface.java 8216181 generic-all +serviceability/sa/TestInstanceKlassSize.java 8216181 generic-all +serviceability/sa/TestIntConstant.java 8216181 generic-all +serviceability/sa/TestJhsdbJstackLock.java 8216181 generic-all +serviceability/sa/TestJhsdbJstackMixed.java 8216181 generic-all +serviceability/sa/TestJmapCore.java 8216181 generic-all +serviceability/sa/TestJmapCoreMetaspace.java 8216181 generic-all +serviceability/sa/TestPrintMdo.java 8216181 generic-all +serviceability/sa/TestRevPtrsForInvokeDynamic.java 8216181 generic-all +serviceability/sa/TestType.java 8216181 generic-all +serviceability/sa/TestUniverse.java 8216181 generic-all diff -r 44c2481650ce -r c84d7dc9e434 test/jdk/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java --- a/test/jdk/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java Fri Jun 21 08:29:09 2019 -0400 +++ b/test/jdk/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java Fri Jun 21 08:32:59 2019 -0400 @@ -29,13 +29,13 @@ /** * @test - * @bug 6852744 + * @bug 6852744 8133489 * @summary PIT b61: PKI test suite fails because self signed certificates * are being rejected * @modules java.base/sun.security.util - * @run main/othervm KeyUsageMatters subca - * @run main/othervm KeyUsageMatters subci - * @run main/othervm KeyUsageMatters alice + * @run main/othervm -Djava.security.debug=certpath KeyUsageMatters subca + * @run main/othervm -Djava.security.debug=certpath KeyUsageMatters subci + * @run main/othervm -Djava.security.debug=certpath KeyUsageMatters alice * @author Xuelei Fan */ diff -r 44c2481650ce -r c84d7dc9e434 test/jdk/sun/security/ssl/SignatureScheme/Tls13NamedGroups.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jdk/sun/security/ssl/SignatureScheme/Tls13NamedGroups.java Fri Jun 21 08:32:59 2019 -0400 @@ -0,0 +1,188 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. 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. + */ + +// +// SunJSSE does not support dynamic system properties, no way to re-use +// system properties in samevm/agentvm mode. +// + +/* + * @test + * @bug 8225766 + * @summary Curve in certificate should not affect signature scheme + * when using TLSv1.3 + * @library /javax/net/ssl/templates + * @run main/othervm Tls13NamedGroups + */ + +import java.net.*; +import java.io.*; +import javax.net.ssl.*; +import java.security.*; +import java.security.cert.*; +import java.security.spec.*; +import java.security.interfaces.*; +import java.util.Base64; + +public class Tls13NamedGroups extends SSLSocketTemplate { + + public static void main(String[] args) throws Exception { + // Limit the supported named group to secp521r1. + System.setProperty("jdk.tls.namedGroups", "secp521r1"); + + new Tls13NamedGroups().run(); + } + + @Override + protected SSLContext createServerSSLContext() throws Exception { + return generateSSLContext(); + } + + @Override + protected void configureServerSocket(SSLServerSocket socket) { + socket.setNeedClientAuth(true); + } + + @Override + protected SSLContext createClientSSLContext() throws Exception { + return generateSSLContext(); + } + + /* + * ============================================================= + * The remainder is just support stuff + */ + + // Certificates and key used in the test. + // + // Trusted Certificate. + static String trustedCertStr = + // SHA256withECDSA, curve prime256v1 + // Validity + // Not Before: May 22 07:18:16 2018 GMT + // Not After : May 17 07:18:16 2038 GMT + // Subject Key Identifier: + // 60:CF:BD:73:FF:FA:1A:30:D2:A4:EC:D3:49:71:46:EF:1A:35:A0:86 + "-----BEGIN CERTIFICATE-----\n" + + "MIIBvjCCAWOgAwIBAgIJAIvFG6GbTroCMAoGCCqGSM49BAMCMDsxCzAJBgNVBAYT\n" + + "AlVTMQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZj\n" + + "ZTAeFw0xODA1MjIwNzE4MTZaFw0zODA1MTcwNzE4MTZaMDsxCzAJBgNVBAYTAlVT\n" + + "MQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZjZTBZ\n" + + "MBMGByqGSM49AgEGCCqGSM49AwEHA0IABBz1WeVb6gM2mh85z3QlvaB/l11b5h0v\n" + + "LIzmkC3DKlVukZT+ltH2Eq1oEkpXuf7QmbM0ibrUgtjsWH3mULfmcWmjUDBOMB0G\n" + + "A1UdDgQWBBRgz71z//oaMNKk7NNJcUbvGjWghjAfBgNVHSMEGDAWgBRgz71z//oa\n" + + "MNKk7NNJcUbvGjWghjAMBgNVHRMEBTADAQH/MAoGCCqGSM49BAMCA0kAMEYCIQCG\n" + + "6wluh1r2/T6L31mZXRKf9JxeSf9pIzoLj+8xQeUChQIhAJ09wAi1kV8yePLh2FD9\n" + + "2YEHlSQUAbwwqCDEVB5KxaqP\n" + + "-----END CERTIFICATE-----"; + // -----BEGIN PRIVATE KEY----- + // MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/HcHdoLJCdq3haVd + // XZTSKP00YzM3xX97l98vGL/RI1KhRANCAAQc9VnlW+oDNpofOc90Jb2gf5ddW+Yd + // LyyM5pAtwypVbpGU/pbR9hKtaBJKV7n+0JmzNIm61ILY7Fh95lC35nFp + // -----END PRIVATE KEY----- + + // End entity certificate. + static String targetCertStr = + // SHA256withECDSA, curve prime256v1 + // Validity + // Not Before: May 22 07:18:16 2018 GMT + // Not After : May 17 07:18:16 2038 GMT + // Authority Key Identifier: + // 60:CF:BD:73:FF:FA:1A:30:D2:A4:EC:D3:49:71:46:EF:1A:35:A0:86 + "-----BEGIN CERTIFICATE-----\n" + + "MIIBqjCCAVCgAwIBAgIJAPLY8qZjgNRAMAoGCCqGSM49BAMCMDsxCzAJBgNVBAYT\n" + + "AlVTMQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZj\n" + + "ZTAeFw0xODA1MjIwNzE4MTZaFw0zODA1MTcwNzE4MTZaMFUxCzAJBgNVBAYTAlVT\n" + + "MQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZjZTEY\n" + + "MBYGA1UEAwwPUmVncmVzc2lvbiBUZXN0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD\n" + + "QgAEb+9n05qfXnfHUb0xtQJNS4JeSi6IjOfW5NqchvKnfJey9VkJzR7QHLuOESdf\n" + + "xlR7q8YIWgih3iWLGfB+wxHiOqMjMCEwHwYDVR0jBBgwFoAUYM+9c//6GjDSpOzT\n" + + "SXFG7xo1oIYwCgYIKoZIzj0EAwIDSAAwRQIgWpRegWXMheiD3qFdd8kMdrkLxRbq\n" + + "1zj8nQMEwFTUjjQCIQDRIrAjZX+YXHN9b0SoWWLPUq0HmiFIi8RwMnO//wJIGQ==\n" + + "-----END CERTIFICATE-----"; + + // Private key in the format of PKCS#8. + static String targetPrivateKey = + // + // EC private key related to cert endEntityCertStrs[0]. + // + "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgn5K03bpTLjEtFQRa\n" + + "JUtx22gtmGEvvSUSQdimhGthdtihRANCAARv72fTmp9ed8dRvTG1Ak1Lgl5KLoiM\n" + + "59bk2pyG8qd8l7L1WQnNHtAcu44RJ1/GVHurxghaCKHeJYsZ8H7DEeI6"; + + static char passphrase[] = "passphrase".toCharArray(); + + // Create the SSLContext instance. + private static SSLContext generateSSLContext() throws Exception { + + // generate certificate from cert string + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + + // create a key store + KeyStore ks = KeyStore.getInstance("JKS"); + ks.load(null, null); + + // import the trused cert + X509Certificate trusedCert = null; + ByteArrayInputStream is = + new ByteArrayInputStream(trustedCertStr.getBytes()); + trusedCert = (X509Certificate)cf.generateCertificate(is); + is.close(); + + ks.setCertificateEntry("Trusted EC Signer", trusedCert); + + // generate the private key. + PKCS8EncodedKeySpec priKeySpec = new PKCS8EncodedKeySpec( + Base64.getMimeDecoder().decode(targetPrivateKey)); + KeyFactory kf = KeyFactory.getInstance("EC"); + ECPrivateKey priKey = + (ECPrivateKey)kf.generatePrivate(priKeySpec); + + // generate certificate chain + is = new ByteArrayInputStream(targetCertStr.getBytes()); + X509Certificate keyCert = (X509Certificate)cf.generateCertificate(is); + is.close(); + + X509Certificate[] chain = new X509Certificate[2]; + chain[0] = keyCert; + chain[1] = trusedCert; + + // import the key entry and the chain + ks.setKeyEntry("TheKey", priKey, passphrase, chain); + + // create SSL context + TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX"); + tmf.init(ks); + + KeyManagerFactory kmf = KeyManagerFactory.getInstance("NewSunX509"); + kmf.init(ks, passphrase); + + SSLContext ctx = SSLContext.getInstance("TLSv1.3"); + ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + ks = null; + + return ctx; + } +}