--- 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
--- 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
--- 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 = <hr/>$(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 = <footer class="legal-footer"><hr/>$(COPYRIGHT_BOTTOM)</footer>
# 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)), <div class="draft-header">$(DRAFT_TEXT)</div>)
+
# 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 := \
+ <body> => <body>$(SPECS_TOP) ; \
</body> => $(SPECS_BOTTOM_$($m_$f_NOF_SUBDIRS))</body>, \
)) \
$(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 := \
- </body> => $(SPECS_BOTTOM_1)</body>, \
-))
-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 := \
+ <body> => <body>$(SPECS_TOP) ; \
+ </body> => $(SPECS_BOTTOM_1)</body>, \
+ ))
+ 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 := \
- </body> => $(SPECS_BOTTOM_0)</body>, \
-))
-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 := \
+ <body> => <body>$(SPECS_TOP) ; \
+ </body> => $(SPECS_BOTTOM_0)</body>, \
+ ))
+ 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
--- 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.
--- 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
--- 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))
--- 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%;
+}
--- 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;
--- 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<AS_NO_KEEPALIVE>::oop_load(oop_addr_at(index));
}
+oop nmethod::oop_at_phantom(int index) const {
+ if (index == 0) {
+ return NULL;
+ }
+ return NativeAccess<ON_PHANTOM_OOP_REF>::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.
--- 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");
--- 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<AlwaysTrueClosure, OopClosure>(&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<AlwaysTrueClosure, OopClosure>(&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);
}
--- 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 {
--- 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 <bool SINGLE_THREADED>
-void ShenandoahClassLoaderDataRoots<SINGLE_THREADED>::clds_do(CLDClosure* strong_clds, CLDClosure* weak_clds, uint worker_id) {
+void ShenandoahClassLoaderDataRoots<SINGLE_THREADED>::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 <bool SINGLE_THREADED>
+void ShenandoahClassLoaderDataRoots<SINGLE_THREADED>::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);
--- 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);
--- 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();
}
--- 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);
--- 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;
}
--- 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'.
* <p>
- * <b>Offset O</b>: 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}.
+ * <b>Offset O</b>: 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}.
* <p>
* <b>Offset Z</b>: This formats the offset based on the number of pattern
* letters. One, two or three letters outputs the hour and minute, without a
--- 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;
}
--- 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);
--- 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
--- 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();
* }</pre>
*
--- 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();
* }</pre>
*
--- 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();
* }</pre>
*
--- 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=\
--- 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,
--- 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;
}
--- /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
--- 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
*/
--- /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;
+ }
+}