diff --git a/.hgtags b/.hgtags
index 9c18df1be18..479d7b40b59 100644
--- a/.hgtags
+++ b/.hgtags
@@ -525,3 +525,4 @@ dc1f9dec2018a37fedba47d8a2aedef99faaec64 jdk-12+19
40098289d5804c3b5e7074bc75501a81e70d9b0d jdk-12+20
f8fb0c86f2b3d24294d39c5685a628e1beb14ba7 jdk-12+21
732bec44c89e8b93a38296bf690f97b7230c5b6d jdk-12+22
+eef755718cb24813031a842bbfc716a6cea18e9a jdk-12+23
diff --git a/doc/building.html b/doc/building.html
index 07914b7c418..f0453251952 100644
--- a/doc/building.html
+++ b/doc/building.html
@@ -396,9 +396,9 @@ CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30
Configure and build with newly created chroot as sysroot/toolchain-path:
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
diff --git a/doc/building.md b/doc/building.md
index ef06dc7a83b..62d0c1cddb7 100644
--- a/doc/building.md
+++ b/doc/building.md
@@ -488,15 +488,15 @@ Certain [X11](http://www.x.org/) libraries and include files are required on
Linux and Solaris.
* To install on an apt-based Linux, try running `sudo apt-get install
- libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev`.
+ libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev`.
* To install on an rpm-based Linux, try running `sudo yum install
- libXtst-devel libXt-devel libXrender-devel libXi-devel`.
+ libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel`.
* To install on Solaris, try running `pkg install x11/header/x11-protocols
x11/library/libice x11/library/libpthread-stubs x11/library/libsm
x11/library/libx11 x11/library/libxau x11/library/libxcb
x11/library/libxdmcp x11/library/libxevie x11/library/libxext
- x11/library/libxrender x11/library/libxscrnsaver x11/library/libxtst
- x11/library/toolkit/libxt`.
+ x11/library/libxrender x11/library/libxrandr x11/library/libxscrnsaver
+ x11/library/libxtst x11/library/toolkit/libxt`.
Use `--with-x=` if `configure` does not properly locate your X11 files.
@@ -1062,6 +1062,7 @@ Note that X11 is needed even if you only want to build a headless JDK.
* libice-dev
* libxrender
* libxrender-dev
+ * libxrandr-dev
* libsm-dev
* libxt-dev
* libx11
@@ -1112,7 +1113,7 @@ apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
* Create chroot on the *build* system, configuring it for *target* system:
```
sudo qemu-debootstrap --arch=arm64 --verbose \
- --include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
+ --include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/
```
diff --git a/make/CompileJavaModules.gmk b/make/CompileJavaModules.gmk
index 1763f31c06e..f56f0e0ab48 100644
--- a/make/CompileJavaModules.gmk
+++ b/make/CompileJavaModules.gmk
@@ -481,7 +481,6 @@ jdk.internal.vm.compiler_EXCLUDES += \
org.graalvm.compiler.processor \
org.graalvm.compiler.replacements.jdk12.test \
org.graalvm.compiler.replacements.jdk9.test \
- org.graalvm.compiler.replacements.jdk9_11.test \
org.graalvm.compiler.replacements.processor \
org.graalvm.compiler.replacements.test \
org.graalvm.compiler.serviceprovider.processor \
diff --git a/make/autoconf/hotspot.m4 b/make/autoconf/hotspot.m4
index d7ebc918419..10b0056a2ce 100644
--- a/make/autoconf/hotspot.m4
+++ b/make/autoconf/hotspot.m4
@@ -25,7 +25,7 @@
# All valid JVM features, regardless of platform
VALID_JVM_FEATURES="compiler1 compiler2 zero minimal dtrace jvmti jvmci \
- graal vm-structs jni-check services management cmsgc epsilongc g1gc parallelgc serialgc zgc nmt cds \
+ graal vm-structs jni-check services management cmsgc epsilongc g1gc parallelgc serialgc shenandoahgc zgc nmt cds \
static-build link-time-opt aot jfr"
# Deprecated JVM features (these are ignored, but with a warning)
@@ -325,6 +325,15 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
fi
fi
+ # Only enable Shenandoah on supported arches
+ AC_MSG_CHECKING([if shenandoah can be built])
+ if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
+ AC_MSG_RESULT([yes])
+ else
+ DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc"
+ AC_MSG_RESULT([no, platform not supported])
+ fi
+
# Only enable ZGC on supported platforms
AC_MSG_CHECKING([if zgc can be built])
if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
@@ -336,7 +345,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
# Disable unsupported GCs for Zero
if HOTSPOT_CHECK_JVM_VARIANT(zero); then
- DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES epsilongc g1gc zgc"
+ DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES epsilongc g1gc zgc shenandoahgc"
fi
# Turn on additional features based on other parts of configure
@@ -470,7 +479,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
fi
# All variants but minimal (and custom) get these features
- NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc epsilongc jni-check jvmti management nmt services vm-structs zgc"
+ NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc epsilongc shenandoahgc jni-check jvmti management nmt services vm-structs zgc"
# Disable CDS on AIX.
if test "x$OPENJDK_TARGET_OS" = "xaix"; then
diff --git a/make/conf/jib-profiles.js b/make/conf/jib-profiles.js
index 2a0b94502df..8cf01a4e0eb 100644
--- a/make/conf/jib-profiles.js
+++ b/make/conf/jib-profiles.js
@@ -248,6 +248,7 @@ var getJibProfilesCommon = function (input, data) {
configure_args: concat(["--enable-jtreg-failure-handler"],
"--with-exclude-translations=de,es,fr,it,ko,pt_BR,sv,ca,tr,cs,sk,ja_JP_A,ja_JP_HA,ja_JP_HI,ja_JP_I,zh_TW,zh_HK",
"--disable-manpages",
+ "--with-jvm-features=-shenandoahgc",
versionArgs(input, common))
};
// Extra settings for debug profiles
@@ -425,7 +426,7 @@ var getJibProfilesProfiles = function (input, common, data) {
"windows-x64": {
target_os: "windows",
target_cpu: "x64",
- dependencies: ["devkit", "graalunit_lib"],
+ dependencies: ["devkit", "pandoc", "graalunit_lib"],
configure_args: concat(common.configure_args_64bit),
},
diff --git a/make/data/charsetmapping/charsets b/make/data/charsetmapping/charsets
index bf1e23345b4..45b422fc6de 100644
--- a/make/data/charsetmapping/charsets
+++ b/make/data/charsetmapping/charsets
@@ -1554,10 +1554,11 @@ charset x-IBM970 IBM970
charset x-IBM964 IBM964
package sun.nio.cs.ext
- type source
+ type template
alias cp964 # JDK historical
alias ibm964
alias ibm-964
+ alias ibm-euctw
alias 964
charset x-IBM33722 IBM33722
@@ -1861,6 +1862,11 @@ charset x-JIS0212_MS5022X JIS_X_0212_MS5022X
minmax 0x21 0x7e 0x21 0x7e
internal true # "internal implementation
+charset SimpleEUCEncoder SimpleEUCEncoder
+ package sun.nio.cs.ext
+ type template
+ internal true
+
########################################################
#
# platform specific charsets, to be registered into spi
diff --git a/make/data/charsetmapping/stdcs-aix b/make/data/charsetmapping/stdcs-aix
index dab8523da14..2ed31864268 100644
--- a/make/data/charsetmapping/stdcs-aix
+++ b/make/data/charsetmapping/stdcs-aix
@@ -16,6 +16,7 @@ IBM942C
IBM943
IBM943C
IBM950
+IBM964
IBM970
IBM1046
IBM1124
@@ -25,3 +26,4 @@ ISO_8859_6
ISO_8859_8
MS1252
TIS_620
+SimpleEUCEncoder
diff --git a/make/devkit/createPandocBundle.sh b/make/devkit/createPandocBundle.sh
index f4c6ca729e4..2b36c58a502 100644
--- a/make/devkit/createPandocBundle.sh
+++ b/make/devkit/createPandocBundle.sh
@@ -41,6 +41,9 @@ if [[ $TARGET_PLATFORM == linux_x64 ]] ; then
elif [[ $TARGET_PLATFORM == macosx_x64 ]] ; then
PANDOC_PLATFORM=macOS
PANDOC_SUFFIX=zip
+elif [[ $TARGET_PLATFORM == windows_x64 ]] ; then
+ PANDOC_PLATFORM=windows-x86_64
+ PANDOC_SUFFIX=zip
else
echo "Unknown platform"
exit 1
@@ -59,7 +62,12 @@ fi
cd ..
mkdir pandoc
-cp tmp/pandoc-$PANDOC_VERSION/bin/pandoc pandoc
+if [[ $TARGET_PLATFORM == windows_x64 ]] ; then
+ cp tmp/pandoc-$PANDOC_VERSION-$PANDOC_PLATFORM/pandoc.exe pandoc
+ chmod +x pandoc/pandoc.exe
+else
+ cp tmp/pandoc-$PANDOC_VERSION/bin/pandoc pandoc
+fi
tar -cvzf ../$BUNDLE_NAME pandoc
cp ../$BUNDLE_NAME "$ORIG_DIR"
diff --git a/make/hotspot/gensrc/GensrcAdlc.gmk b/make/hotspot/gensrc/GensrcAdlc.gmk
index 92b030b69da..8cd9af6ea12 100644
--- a/make/hotspot/gensrc/GensrcAdlc.gmk
+++ b/make/hotspot/gensrc/GensrcAdlc.gmk
@@ -136,6 +136,12 @@ ifeq ($(call check-jvm-feature, compiler2), true)
$d/os_cpu/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH).ad \
)))
+ ifeq ($(call check-jvm-feature, shenandoahgc), true)
+ AD_SRC_FILES += $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \
+ $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/gc/shenandoah/shenandoah_$(HOTSPOT_TARGET_CPU).ad \
+ )))
+ endif
+
SINGLE_AD_SRCFILE := $(ADLC_SUPPORT_DIR)/all-ad-src.ad
INSERT_FILENAME_AWK_SCRIPT := \
diff --git a/make/hotspot/lib/JvmDtraceObjects.gmk b/make/hotspot/lib/JvmDtraceObjects.gmk
index 895cfdf4907..7e17f1e31a9 100644
--- a/make/hotspot/lib/JvmDtraceObjects.gmk
+++ b/make/hotspot/lib/JvmDtraceObjects.gmk
@@ -60,6 +60,7 @@ ifeq ($(call check-jvm-feature, dtrace), true)
ciEnv.o \
classLoadingService.o \
compileBroker.o \
+ gcVMOperations.o \
hashtable.o \
instanceKlass.o \
java.o \
@@ -74,18 +75,17 @@ ifeq ($(call check-jvm-feature, dtrace), true)
thread.o \
unsafe.o \
vmThread.o \
- vmGCOperations.o \
)
ifeq ($(call check-jvm-feature, cmsgc), true)
DTRACE_INSTRUMENTED_OBJS += $(addprefix $(JVM_OUTPUTDIR)/objs/, \
- vmCMSOperations.o \
+ cmsVMOperations.o \
)
endif
ifeq ($(call check-jvm-feature, parallelgc), true)
DTRACE_INSTRUMENTED_OBJS += $(addprefix $(JVM_OUTPUTDIR)/objs/, \
- vmPSOperations.o \
+ psVMOperations.o \
)
endif
diff --git a/make/hotspot/lib/JvmFeatures.gmk b/make/hotspot/lib/JvmFeatures.gmk
index c42b1e930aa..ceee2ea72a4 100644
--- a/make/hotspot/lib/JvmFeatures.gmk
+++ b/make/hotspot/lib/JvmFeatures.gmk
@@ -166,6 +166,13 @@ ifneq ($(call check-jvm-feature, zgc), true)
JVM_EXCLUDE_PATTERNS += gc/z
endif
+ifneq ($(call check-jvm-feature, shenandoahgc), true)
+ JVM_CFLAGS_FEATURES += -DINCLUDE_SHENANDOAHGC=0
+ JVM_EXCLUDE_PATTERNS += gc/shenandoah
+else
+ JVM_CFLAGS_FEATURES += -DSUPPORT_BARRIER_ON_PRIMITIVES -DSUPPORT_NOT_TO_SPACE_INVARIANT
+endif
+
ifneq ($(call check-jvm-feature, jfr), true)
JVM_CFLAGS_FEATURES += -DINCLUDE_JFR=0
JVM_EXCLUDE_PATTERNS += jfr
diff --git a/make/hotspot/lib/JvmOverrideFiles.gmk b/make/hotspot/lib/JvmOverrideFiles.gmk
index 3e32966fa18..7d45dd331af 100644
--- a/make/hotspot/lib/JvmOverrideFiles.gmk
+++ b/make/hotspot/lib/JvmOverrideFiles.gmk
@@ -36,6 +36,11 @@ ifeq ($(TOOLCHAIN_TYPE), gcc)
BUILD_LIBJVM_assembler_x86.cpp_CXXFLAGS := -Wno-maybe-uninitialized
BUILD_LIBJVM_cardTableBarrierSetAssembler_x86.cpp_CXXFLAGS := -Wno-maybe-uninitialized
BUILD_LIBJVM_interp_masm_x86.cpp_CXXFLAGS := -Wno-uninitialized
+ ifeq ($(DEBUG_LEVEL), release)
+ # Need extra inlining to collapse all marking code into the hot marking loop
+ BUILD_LIBJVM_shenandoahConcurrentMark.cpp_CXXFLAGS := --param inline-unit-growth=1000
+ BUILD_LIBJVM_shenandoahTraversalGC.cpp_CXXFLAGS := --param inline-unit-growth=1000
+ endif
endif
LIBJVM_FDLIBM_COPY_OPT_FLAG := $(CXX_O_FLAG_NONE)
diff --git a/make/jdk/src/classes/build/tools/cldrconverter/AbstractLDMLHandler.java b/make/jdk/src/classes/build/tools/cldrconverter/AbstractLDMLHandler.java
index 88868eff70d..2197a279682 100644
--- a/make/jdk/src/classes/build/tools/cldrconverter/AbstractLDMLHandler.java
+++ b/make/jdk/src/classes/build/tools/cldrconverter/AbstractLDMLHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -151,6 +151,19 @@ abstract class AbstractLDMLHandler extends DefaultHandler {
}
}
+ void pushStringListEntry(String qName, Attributes attributes, String key) {
+ if (!pushIfIgnored(qName, attributes)) {
+ currentContainer = new StringListEntry(qName, currentContainer, key);
+ }
+ }
+
+ void pushStringListElement(String qName, Attributes attributes, int index) {
+ if (!pushIfIgnored(qName, attributes)) {
+ currentContainer = new StringListElement(qName, currentContainer, index);
+ }
+ }
+
+
private boolean pushIfIgnored(String qName, Attributes attributes) {
if (isIgnored(attributes) || currentContainer instanceof IgnoredContainer) {
pushIgnoredContainer(qName);
diff --git a/make/jdk/src/classes/build/tools/cldrconverter/Bundle.java b/make/jdk/src/classes/build/tools/cldrconverter/Bundle.java
index f608bc97882..71edade6daa 100644
--- a/make/jdk/src/classes/build/tools/cldrconverter/Bundle.java
+++ b/make/jdk/src/classes/build/tools/cldrconverter/Bundle.java
@@ -53,6 +53,10 @@ class Bundle {
"NumberPatterns/percent"
};
+ private final static String[] COMPACT_NUMBER_PATTERN_KEYS = {
+ "short.CompactNumberPatterns",
+ "long.CompactNumberPatterns"};
+
private final static String[] NUMBER_ELEMENT_KEYS = {
"NumberElements/decimal",
"NumberElements/group",
@@ -228,6 +232,16 @@ class Bundle {
}
}
+ for (String k : COMPACT_NUMBER_PATTERN_KEYS) {
+ List patterns = (List) myMap.remove(k);
+ if (patterns != null) {
+ // Replace any null entry with empty strings.
+ String[] arrPatterns = patterns.stream()
+ .map(s -> s == null ? "" : s).toArray(String[]::new);
+ myMap.put(k, arrPatterns);
+ }
+ }
+
// if myMap has any of NUMBER_ELEMENT_KEYS, create a complete NumberElements.
String defaultScript = (String) myMap.get("DefaultNumberingSystem");
@SuppressWarnings("unchecked")
diff --git a/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java b/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java
index 0ecb7eb6f59..473bc73d183 100644
--- a/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java
+++ b/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java
@@ -888,6 +888,8 @@ public class CLDRConverter {
copyIfPresent(map, "NumberElements", formatData);
}
copyIfPresent(map, "NumberPatterns", formatData);
+ copyIfPresent(map, "short.CompactNumberPatterns", formatData);
+ copyIfPresent(map, "long.CompactNumberPatterns", formatData);
// put extra number elements for available scripts into formatData, if it is "root"
if (id.equals("root")) {
diff --git a/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java b/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java
index f45b5a7df60..f8ddf34dc8e 100644
--- a/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java
+++ b/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java
@@ -52,6 +52,8 @@ class LDMLParseHandler extends AbstractLDMLHandler