> # Date 1543498682 -3600
> # Thu Nov 29 14:38:02 2018 +0100
> # Node ID bc14ee6f50c73703229f979e78b93bcef12ae106
> # Parent a96844b3a929cc2eb92fe7963be8aec603f24a83
> Add support for SoftFloat library on ARM
>
> diff --git a/doc/building.html b/doc/building.html
> --- a/doc/building.html
> +++ b/doc/building.html
> @@ -53,6 +53,7 @@
> X11
> ALSA
> libffi
> +SoftFloat
>
> Build Tools Requirements
> - Autoconf
> @@ -415,6 +416,12 @@
> - To install on an rpm-based Linux, try running
sudo yum install libffi-devel
.
>
> Use --with-libffi=<path>
if configure
does not properly locate your libffi files.
> +SoftFloat
> +Berkeley SoftFloat-3 can be used on ARM processors without FPU to slightly enhance the arithmetic precision of some floating point operations. It is not required, system softfp routines can be used without any problems. The precision loss is extremely small, but the JCK detects it.
> +
> +- To install the library, you will have to download its source and build it for the target platform. To do so, take a look in the
build/Linux-ARM-VFPv2-GCC
subdirectory.
> +
> +Use --with-softfloat-lib=<path>
and --with-softfloat-include=<path>
to specify the path to the softfloat.a
archive and the source/include
directory. If you omit them or use --without-softfloat-*
, standard system libraries will be used instead.
>
> Autoconf
> The JDK requires Autoconf; on all platforms. At least version 2.69 is required.
> @@ -486,6 +493,7 @@
> --with-x=<path>
- Set the path to X11
> --with-alsa=<path>
- Set the path to ALSA
> --with-libffi=<path>
- Set the path to libffi
> +--with-softfloat-lib=<path>
, --with-softfloat-include=<path>
- Set the path to SoftFloat library and include directory.
> --with-jtreg=<path>
- Set the path to JTReg. See Running Tests
>
> Certain third-party libraries used by the JDK (libjpeg, giflib, libpng, lcms and zlib) are included in the JDK repository. The default behavior of the JDK build is to use this version of these libraries, but they might be replaced by an external version. To do so, specify system
as the <source>
option in these arguments. (The default is bundled
).
> diff --git a/doc/building.md b/doc/building.md
> --- a/doc/building.md
> +++ b/doc/building.md
> @@ -527,6 +527,24 @@
> Use `--with-libffi=` if `configure` does not properly locate your libffi
> files.
>
> +### SoftFloat
> +
> +[Berkeley SoftFloat-3](http://www.jhauser.us/arithmetic/SoftFloat.html)
> +can be used on ARM processors without FPU to slightly enhance
> +the arithmetic precision of some floating point operations. It is not
> +required, system softfp routines can be used without any problems.
> +The precision loss is extremely small, but [the JCK detects it](
> +http://mail.openjdk.java.net/pipermail/aarch32-port-dev/2016-November/000611.html).
> +
> + * To install the library, you will have to download its source and build it
> + for the target platform. To do so, take a look in the
> + `build/Linux-ARM-VFPv2-GCC` subdirectory.
> +
> +Use `--with-softfloat-lib=` and `--with-softfloat-include=`
> +to specify the path to the `softfloat.a` archive and the `source/include`
> +directory. If you omit them or use `--without-softfloat-*`, standard
> +system libraries will be used instead.
> +
> ## Build Tools Requirements
>
> ### Autoconf
> @@ -694,6 +712,8 @@
> * `--with-x=` - Set the path to [X11](#x11)
> * `--with-alsa=` - Set the path to [ALSA](#alsa)
> * `--with-libffi=` - Set the path to [libffi](#libffi)
> + * `--with-softfloat-lib=`, `--with-softfloat-include=` -
> + Set the path to [SoftFloat](#softfloat) library and include directory.
> * `--with-jtreg=` - Set the path to JTReg. See [Running Tests](
> #running-tests)
>
> diff --git a/make/autoconf/lib-softfloat.m4 b/make/autoconf/lib-softfloat.m4
> new file mode 100644
> --- /dev/null
> +++ b/make/autoconf/lib-softfloat.m4
> @@ -0,0 +1,93 @@
> +#
> +# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
> +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> +#
> +# This code is free software; you can redistribute it and/or modify it
> +# under the terms of the GNU General Public License version 2 only, as
> +# published by the Free Software Foundation. Oracle designates this
> +# particular file as subject to the "Classpath" exception as provided
> +# by Oracle in the LICENSE file that accompanied this code.
> +#
> +# This code is distributed in the hope that it will be useful, but WITHOUT
> +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
> +# version 2 for more details (a copy is included in the LICENSE file that
> +# accompanied this code).
> +#
> +# You should have received a copy of the GNU General Public License version
> +# 2 along with this work; if not, write to the Free Software Foundation,
> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
> +#
> +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
> +# or visit www.oracle.com if you need additional information or have any
> +# questions.
> +#
> +
> +################################################################################
> +# Setup softfloat library
> +################################################################################
> +AC_DEFUN_ONCE([LIB_SETUP_SOFTFLOAT],
> +[
> + AC_ARG_WITH(softfloat-lib, [AS_HELP_STRING([--with-softfloat-lib],
> + [specify the path to SoftFloat-3 static library])])
> + AC_ARG_WITH(softfloat-include, [AS_HELP_STRING([--with-softfloat-include],
> + [specify the path to SoftFloat-3 include directory])])
> +
> + AC_MSG_CHECKING([if softfloat helper library is to be used])
> +
> + SOFTFLOAT_LIB=${with_softfloat_lib}
> + SOFTFLOAT_INC=${with_softfloat_include}
> +
> + if test "x$NEEDS_LIB_SOFTFLOAT" = xtrue; then
> +
> + if test "x${SOFTFLOAT_LIB}" = x || test "x${SOFTFLOAT_LIB}" = xno; then
> + SOFTFLOAT_FOUND=false
> +
> + if test "x${SOFTFLOAT_INC}" != x && test "x${SOFTFLOAT_INC}" != xno; then
> + AC_MSG_ERROR([--with-softfloat-include was specified, but not --with-softfloat-lib])
> + fi
> +
> + elif test "x${SOFTFLOAT_INC}" = x || test "x${SOFTFLOAT_INC}" = xno; then
> + SOFTFLOAT_FOUND=false
> +
> + if test "x${SOFTFLOAT_LIB}" != x && test "x${SOFTFLOAT_LIB}" != xno; then
> + AC_MSG_ERROR([--with-softfloat-lib was specified, but not --with-softfloat-include])
> + fi
> +
> + else
> + SOFTFLOAT_FOUND=true
> + fi
> +
> + if test "x$SOFTFLOAT_FOUND" = "xtrue"; then
> + AC_MSG_RESULT([yes, external library used])
> +
> + SOFTFLOAT_LIBS="${SOFTFLOAT_LIB}"
> + SOFTFLOAT_CFLAGS="-I${SOFTFLOAT_INC} -DSOFTFLOAT_EXTERNAL"
> +
> + AC_MSG_CHECKING([for softfloat library])
> + AC_MSG_RESULT([$SOFTFLOAT_LIBS])
> +
> + AC_MSG_CHECKING([for softfloat compiler flags])
> + AC_MSG_RESULT([$SOFTFLOAT_CFLAGS])
> +
> + else
> + AC_MSG_RESULT([no, system softfp used])
> + AC_MSG_NOTICE([Floating point operations may be less precise by a very small amount])
> + SOFTFLOAT_LIBS=
> + SOFTFLOAT_CFLAGS=
> + fi
> + else
> + AC_MSG_RESULT([no, not needed])
> + if test "x${SOFTFLOAT_LIB}" != x && test "x${SOFTFLOAT_LIB}" != xno; then
> + AC_MSG_WARN([[sflt build not used, so --with-softfloat-lib is ignored]])
> + fi
> + if test "x${SOFTFLOAT_INC}" != x && test "x${SOFTFLOAT_INC}" != xno; then
> + AC_MSG_WARN([[sflt build not used, so --with-softfloat-include is ignored]])
> + fi
> + SOFTFLOAT_LIBS=
> + SOFTFLOAT_CFLAGS=
> + fi
> +
> + AC_SUBST(SOFTFLOAT_LIBS)
> + AC_SUBST(SOFTFLOAT_CFLAGS)
> +])
> diff --git a/make/autoconf/libraries.m4 b/make/autoconf/libraries.m4
> --- a/make/autoconf/libraries.m4
> +++ b/make/autoconf/libraries.m4
> @@ -33,6 +33,7 @@
> m4_include([lib-x11.m4])
> m4_include([lib-fontconfig.m4])
> m4_include([lib-tests.m4])
> +m4_include([lib-softfloat.m4])
>
> ################################################################################
> # Determine which libraries are needed for this configuration
> @@ -79,6 +80,13 @@
> NEEDS_LIB_ALSA=false
> fi
>
> + if (test "x$OPENJDK_TARGET_CPU" == xarm &&
> + (test "x$ARM_FLOAT_TYPE" = "xsflt" || test "x$ARM_FLOAT_TYPE" = "xvfp-sflt" )); then
> + NEEDS_LIB_SOFTFLOAT=true
> + else
> + NEEDS_LIB_SOFTFLOAT=false
> + fi
> +
I don't think this name of the variable is particularly good. I realize
you have tried to follow a pattern, but up until now we've had the
situation that a library was either required, or not used. With
softfloat, there's the third option of "use it if present, otherwise
ignore". This meaning is not very well shown by the name
NEEDS_LIB_SOFTFLOAT. I recommend changing this to "USES_LIB_SOFTFLOAT".
/Magnus
> # Check if ffi is needed
> if HOTSPOT_CHECK_JVM_VARIANT(zero); then
> NEEDS_LIB_FFI=true
> @@ -98,6 +106,7 @@
> LIB_SETUP_FONTCONFIG
> LIB_SETUP_FREETYPE
> LIB_SETUP_ALSA
> + LIB_SETUP_SOFTFLOAT
> LIB_SETUP_LIBFFI
> LIB_SETUP_BUNDLED_LIBS
> LIB_SETUP_MISC_LIBS
> diff --git a/make/autoconf/spec.gmk.in b/make/autoconf/spec.gmk.in
> --- a/make/autoconf/spec.gmk.in
> +++ b/make/autoconf/spec.gmk.in
> @@ -353,6 +353,8 @@
> CUPS_CFLAGS:=@CUPS_CFLAGS@
> ALSA_LIBS:=@ALSA_LIBS@
> ALSA_CFLAGS:=@ALSA_CFLAGS@
> +SOFTFLOAT_LIBS:=@SOFTFLOAT_LIBS@
> +SOFTFLOAT_CFLAGS:=@SOFTFLOAT_CFLAGS@
> LIBFFI_LIBS:=@LIBFFI_LIBS@
> LIBFFI_CFLAGS:=@LIBFFI_CFLAGS@
> ENABLE_LIBFFI_BUNDLING:=@ENABLE_LIBFFI_BUNDLING@
> diff --git a/make/hotspot/lib/CompileJvm.gmk b/make/hotspot/lib/CompileJvm.gmk
> --- a/make/hotspot/lib/CompileJvm.gmk
> +++ b/make/hotspot/lib/CompileJvm.gmk
> @@ -49,6 +49,7 @@
>
> JVM_LIBS += \
> $(JVM_LIBS_FEATURES) \
> + $(SOFTFLOAT_LIBS) \
> #
>
> # These files and directories are always excluded
> diff --git a/make/hotspot/lib/JvmFlags.gmk b/make/hotspot/lib/JvmFlags.gmk
> --- a/make/hotspot/lib/JvmFlags.gmk
> +++ b/make/hotspot/lib/JvmFlags.gmk
> @@ -88,6 +88,7 @@
> $(JVM_CFLAGS_TARGET_DEFINES) \
> $(JVM_CFLAGS_FEATURES) \
> $(JVM_CFLAGS_INCLUDES) \
> + $(SOFTFLOAT_CFLAGS) \
> $(EXTRA_CFLAGS) \
> #
>
> diff --git a/src/hotspot/cpu/arm/assembler_arm_32.hpp b/src/hotspot/cpu/arm/assembler_arm_32.hpp
> --- a/src/hotspot/cpu/arm/assembler_arm_32.hpp
> +++ b/src/hotspot/cpu/arm/assembler_arm_32.hpp
> @@ -1242,10 +1242,10 @@
>
> // Imported code from glibc soft-fp bundle for
> // calculation accuracy improvement. See CR 6757269.
> -extern double __aeabi_fadd_glibc(float, float);
> -extern double __aeabi_fsub_glibc(float, float);
> -extern double __aeabi_dadd_glibc(double, double);
> -extern double __aeabi_dsub_glibc(double, double);
> +extern float __aeabi_fadd_extlib(float, float);
> +extern float __aeabi_fsub_extlib(float, float);
> +extern double __aeabi_dadd_extlib(double, double);
> +extern double __aeabi_dsub_extlib(double, double);
> };
> #endif // __SOFTFP__
>
> diff --git a/src/hotspot/cpu/arm/c1_LIRGenerator_arm.cpp b/src/hotspot/cpu/arm/c1_LIRGenerator_arm.cpp
> --- a/src/hotspot/cpu/arm/c1_LIRGenerator_arm.cpp
> +++ b/src/hotspot/cpu/arm/c1_LIRGenerator_arm.cpp
> @@ -490,27 +490,28 @@
> // Call function compiled with -msoft-float.
>
> // __aeabi_XXXX_glibc: Imported code from glibc soft-fp bundle for calculation accuracy improvement. See CR 6757269.
> + // http://mail.openjdk.java.net/pipermail/aarch32-port-dev/2016-November/000611.html
>
> case Bytecodes::_fadd:
> - runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fadd_glibc);
> + runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fadd_extlib);
> break;
> case Bytecodes::_fmul:
> runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fmul);
> break;
> case Bytecodes::_fsub:
> - runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fsub_glibc);
> + runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fsub_extlib);
> break;
> case Bytecodes::_fdiv:
> runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fdiv);
> break;
> case Bytecodes::_dadd:
> - runtime_func = CAST_FROM_FN_PTR(address, __aeabi_dadd_glibc);
> + runtime_func = CAST_FROM_FN_PTR(address, __aeabi_dadd_extlib);
> break;
> case Bytecodes::_dmul:
> runtime_func = CAST_FROM_FN_PTR(address, __aeabi_dmul);
> break;
> case Bytecodes::_dsub:
> - runtime_func = CAST_FROM_FN_PTR(address, __aeabi_dsub_glibc);
> + runtime_func = CAST_FROM_FN_PTR(address, __aeabi_dsub_extlib);
> break;
> case Bytecodes::_ddiv:
> runtime_func = CAST_FROM_FN_PTR(address, __aeabi_ddiv);
> diff --git a/src/hotspot/cpu/arm/c1_Runtime1_arm.cpp b/src/hotspot/cpu/arm/c1_Runtime1_arm.cpp
> --- a/src/hotspot/cpu/arm/c1_Runtime1_arm.cpp
> +++ b/src/hotspot/cpu/arm/c1_Runtime1_arm.cpp
> @@ -804,15 +804,16 @@
> #define FUNCTION_CASE(a, f) \
> if ((intptr_t)a == CAST_FROM_FN_PTR(intptr_t, f)) return #f
>
> - FUNCTION_CASE(entry, __aeabi_fadd_glibc);
> + // __aeabi_XXXX_glibc: Imported code from glibc soft-fp bundle for calculation accuracy improvement. See CR 6757269.
> + // http://mail.openjdk.java.net/pipermail/aarch32-port-dev/2016-November/000611.html
> + FUNCTION_CASE(entry, __aeabi_fadd_extlib);
> FUNCTION_CASE(entry, __aeabi_fmul);
> - FUNCTION_CASE(entry, __aeabi_fsub_glibc);
> + FUNCTION_CASE(entry, __aeabi_fsub_extlib);
> FUNCTION_CASE(entry, __aeabi_fdiv);
>
> - // __aeabi_XXXX_glibc: Imported code from glibc soft-fp bundle for calculation accuracy improvement. See CR 6757269.
> - FUNCTION_CASE(entry, __aeabi_dadd_glibc);
> + FUNCTION_CASE(entry, __aeabi_dadd_extlib);
> FUNCTION_CASE(entry, __aeabi_dmul);
> - FUNCTION_CASE(entry, __aeabi_dsub_glibc);
> + FUNCTION_CASE(entry, __aeabi_dsub_extlib);
> FUNCTION_CASE(entry, __aeabi_ddiv);
>
> FUNCTION_CASE(entry, __aeabi_f2d);
> diff --git a/src/hotspot/cpu/arm/softfloat_arm.cpp b/src/hotspot/cpu/arm/softfloat_arm.cpp
> new file mode 100644
> --- /dev/null
> +++ b/src/hotspot/cpu/arm/softfloat_arm.cpp
> @@ -0,0 +1,112 @@
> +/*
> + * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
> + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> + *
> + * This code is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 only, as
> + * published by the Free Software Foundation.
> + *
> + * 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.
> + *
> + */
> +
> +#ifdef __SOFTFP__
> +
> +// Soft float function declarations
> +extern "C" {
> + extern float __aeabi_fadd(float, float);
> + extern float __aeabi_fsub(float, float);
> + extern double __aeabi_dadd(double, double);
> + extern double __aeabi_dsub(double, double);
> +
> + extern float __aeabi_fadd_extlib(float, float);
> + extern float __aeabi_fsub_extlib(float, float);
> + extern double __aeabi_dadd_extlib(double, double);
> + extern double __aeabi_dsub_extlib(double, double);
> +};
> +
> +#ifdef SOFTFLOAT_EXTERNAL
> +
> +extern "C" {
> +#include "softfloat.h"
> +}
> +
> +#include
> +
> +static float __aeabi_float_handling(float natA, float natB, bool add) {
> + float32_t libA;
> + float32_t libB;
> + float32_t libC;
> + float natC;
> +
> + memcpy(&libA, &natA, sizeof(libA));
> + memcpy(&libB, &natB, sizeof(libB));
> + libC = add ? f32_add(libA, libB) : f32_sub(libA, libB);
> + memcpy(&natC, &libC, sizeof(libC));
> +
> + return natC;
> +}
> +
> +static double __aeabi_double_handling(double natA, double natB, bool add) {
> + float64_t libA;
> + float64_t libB;
> + float64_t libC;
> + double natC;
> +
> + memcpy(&libA, &natA, sizeof(libA));
> + memcpy(&libB, &natB, sizeof(libB));
> + libC = add ? f64_add(libA, libB) : f64_sub(libA, libB);
> + memcpy(&natC, &libC, sizeof(libC));
> +
> + return natC;
> +}
> +
> +float __aeabi_fadd_extlib(float a, float b) {
> + return __aeabi_float_handling(a, b, true);
> +}
> +
> +float __aeabi_fsub_extlib(float a, float b) {
> + return __aeabi_float_handling(a, b, false);
> +}
> +
> +double __aeabi_dadd_extlib(double a, double b) {
> + return __aeabi_double_handling(a, b, true);
> +}
> +
> +double __aeabi_dsub_extlib(double a, double b) {
> + return __aeabi_double_handling(a, b, false);
> +}
> +
> +#else
> +
> +float __aeabi_fadd_extlib(float a, float b) {
> + return __aeabi_fadd(a, b);
> +}
> +
> +float __aeabi_fsub_extlib(float a, float b) {
> + return __aeabi_fsub(a, b);
> +}
> +
> +double __aeabi_dadd_extlib(double a, double b) {
> + return __aeabi_dadd(a, b);
> +}
> +
> +double __aeabi_dsub_extlib(double a, double b) {
> + return __aeabi_dsub(a, b);
> +}
> +
> +#endif
> +
> +#endif // __SOFTFP__
> diff --git a/src/hotspot/cpu/arm/templateTable_arm.cpp b/src/hotspot/cpu/arm/templateTable_arm.cpp
> --- a/src/hotspot/cpu/arm/templateTable_arm.cpp
> +++ b/src/hotspot/cpu/arm/templateTable_arm.cpp
> @@ -1610,8 +1610,10 @@
> __ mov(R1, R0_tos);
> __ pop_i(R0);
> switch (op) {
> - case add: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fadd_glibc), R0, R1); break;
> - case sub: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fsub_glibc), R0, R1); break;
> + // __aeabi_XXXX_glibc: Imported code from glibc soft-fp bundle for calculation accuracy improvement. See CR 6757269.
> + // http://mail.openjdk.java.net/pipermail/aarch32-port-dev/2016-November/000611.html
> + case add: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fadd_extlib), R0, R1); break;
> + case sub: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fsub_extlib), R0, R1); break;
> case mul: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fmul), R0, R1); break;
> case div: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fdiv), R0, R1); break;
> case rem: __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::frem), R0, R1); break;
> @@ -1653,8 +1655,9 @@
> __ pop_l(R0, R1);
> switch (op) {
> // __aeabi_XXXX_glibc: Imported code from glibc soft-fp bundle for calculation accuracy improvement. See CR 6757269.
> - case add: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_dadd_glibc), R0, R1, R2, R3); break;
> - case sub: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_dsub_glibc), R0, R1, R2, R3); break;
> + // http://mail.openjdk.java.net/pipermail/aarch32-port-dev/2016-November/000611.html
> + case add: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_dadd_extlib), R0, R1, R2, R3); break;
> + case sub: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_dsub_extlib), R0, R1, R2, R3); break;
> case mul: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_dmul), R0, R1, R2, R3); break;
> case div: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_ddiv), R0, R1, R2, R3); break;
> case rem: __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::drem), R0, R1, R2, R3); break;
>
From rkennke at redhat.com Mon Dec 3 12:30:19 2018
From: rkennke at redhat.com (Roman Kennke)
Date: Mon, 3 Dec 2018 13:30:19 +0100
Subject: RFR (round 4), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To: <1da44101-954c-c560-c332-af82bac2abec@oracle.com>
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
<1da44101-954c-c560-c332-af82bac2abec@oracle.com>
Message-ID: <479eaac8-73a9-4a07-0e7e-2c8bdb672bf4@redhat.com>
Hi Jini,
Thanks for your suggestions. I've added this to Shenandoah's dev:
http://cr.openjdk.java.net/~rkennke/shenandoah-sa/webrev.01/
and it will show up in next round of webrevs.
Thanks,
Roman
> A few comments on the SA changes:
>
> ==> Could you please add the following lines in
> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/HSDB.java from line
> 1120 onwards to avoid the "[Unknown generation]" message with hsdb while
> displaying the Stack Memory for a mutator thread ?
>
> else if (collHeap instanceof ShenandoahHeap) {
> ?? ShenandoahHeap heap = (ShenandoahHeap) collHeap;
> ?? anno = "ShenandoahHeap ";
> ?? bad = false;
> }
>
> ==>
> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java
>
> The printGCAlgorithm() method would need to be updated to read in the
> UseShenandoahGC flag to avoid the default "Mark Sweep Compact GC" being
> displayed with jhsdb jmap -heap.
>
> ==>
> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/GCName.java
>
> Could you please add "Shenandoah" to the GCName enum list ?
>
> ==>
> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/GCCause.java
>
> Could you please update the GCCause enum values to include these:
>
> ??? _shenandoah_stop_vm,
> ??? _shenandoah_allocation_failure_evac,
> ??? _shenandoah_concurrent_gc,
> ??? _shenandoah_traversal_gc,
> ??? _shenandoah_upgrade_to_full_gc,
>
> ==> share/classes/sun/jvm/hotspot/runtime/VMOps.java
>
> It would be good to add 'ShenandoahOperation' to the VMOps enum (though
> it is probably not in sync now).
>
> Thank you,
> Jini.
>
> On 12/1/2018 2:30 AM, Roman Kennke wrote:
>> Hi all,
>>
>> here comes round 4 of Shenandoah upstreaming review:
>>
>> This includes fixes for the issues that Per brought up:
>> - Verify and gracefully reject dangerous flags combinations that
>> disables required barriers
>> - Revisited @requires filters in tests
>> - Trim unused code from Shenandoah's SA impl
>> - Move ShenandoahGCTracer to gc/shenandoah
>> - Fix ordering of GC names in various files
>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>>
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>
>> Thanks everybody for taking time to review this!
>> Roman
>>
>>> Hello all,
>>>
>>> Thanks so far for all the reviews and support!
>>>
>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>>
>>> Things we've changed today:
>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>> requires an addition in build machinery though, see
>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>> - Improved zero-disabling and build-code-simplification as suggested by
>>> Magnus and Per
>>> - Cleaned up some leftovers in C2
>>> - Improved C2 loop opts code by introducing another APIs in
>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards
>>> now.
>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>>> that.
>>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>>> - Rebased on jdk-12+22
>>>
>>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>>
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>
>>> Thanks,
>>> Roman
>>>
>>>> Alright, we fixed:
>>>> - The minor issues that Kim reported in shared-gc
>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>
>>>> Some notes:
>>>> Leonid:? test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>> correct. The @requires there means to exclude runs with both CMS and
>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>
>>>>
>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>
>>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>>> those with ZGC?
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>
>>>>
>>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>>> next round).
>>>>
>>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>>> better. I can tell that we're not done with C2 yet. Can you look over
>>>> the code and see what is ok, and especially what is not ok, so that we
>>>> can focus our efforts on the relevant parts?
>>>>
>>>> Updated set of webrevs:
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>
>>>> Thanks,
>>>> Roman
>>>>
>>>>
>>>>> Hi,
>>>>>
>>>>> This is the first round of changes for including Shenandoah GC into
>>>>> mainline.
>>>>> I divided the review into parts that roughly correspond to the
>>>>> mailing lists
>>>>> that would normally review it, and I divided it into 'shared' code
>>>>> changes and
>>>>> 'shenandoah' code changes (actually, mostly additions). The intend
>>>>> is to
>>>>> eventually
>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>
>>>>> JEP:
>>>>> ?? https://openjdk.java.net/jeps/189
>>>>> Bug entry:
>>>>>
>>>>> ??https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>
>>>>> Webrevs:
>>>>> ?? http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>
>>>>> For those who want to see the full change, have a look at the
>>>>> shenandoah-complete
>>>>>
>>>>>
>>>>> directory,
>>>>> it contains the full combined webrev. Alternatively, there is the file
>>>>> shenandoah-master.patch
>>>>> ,
>>>>>
>>>>> which is what I intend to commit (and which should be equivalent to
>>>>> the
>>>>> 'shenandoah-complete' webrev).
>>>>>
>>>>> Sections to review (at this point) are the following:
>>>>> ??*) shenandoah-gc
>>>>>
>>>>>
>>>>> ???? - Actual Shenandoah implementation, almost completely residing in
>>>>> gc/shenandoah
>>>>>
>>>>> ??*) shared-gc
>>>>>
>>>>>
>>>>> ???? - This is mostly boilerplate that is common to any GC
>>>>> ???? - referenceProcessor.cpp has a little change to make one
>>>>> assert not
>>>>> fail (next to CMS and G1)
>>>>> ???? - taskqueue.hpp has some small adjustments to enable subclassing
>>>>>
>>>>> ??*) shared-serviceability
>>>>>
>>>>>
>>>>> ???? - The usual code to support another GC
>>>>>
>>>>> ??*) shared-runtime
>>>>>
>>>>>
>>>>> ???? - A number of friends declarations to allow Shenandoah
>>>>> iterators to
>>>>> hook up with,
>>>>> ?????? e.g. ClassLoaderData, CodeCache, etc
>>>>> ???? - Warning and disabling JFR LeakProfiler
>>>>> ???? - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>> Shenandoah C2 optimizations
>>>>> ???? - Locks initialization in mutexLocker.cpp as usual
>>>>> ???? - VM operations defines for Shenandoah's VM ops
>>>>> ???? - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>> Shenandoah's logging
>>>>> ???? - The usual macros in macro.hpp
>>>>>
>>>>> ??*) shared-build
>>>>>
>>>>>
>>>>> ???? - Add shenandoah feature, enabled by default, as agreed with
>>>>> Vladimir K. beforehand
>>>>> ???? - Some flags for shenandoah-enabled compilation to get
>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>> ?????? and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>> Shenandoah's barriers
>>>>> ???? - --param inline-unit-growth=1000 settings for 2 shenandoah
>>>>> source
>>>>> files, which is
>>>>> ?????? useful to get the whole marking loop inlined (observed
>>>>> significant
>>>>> regression if we
>>>>> ?????? don't)
>>>>>
>>>>> ??*) shared-tests
>>>>>
>>>>>
>>>>> ???? - Test infrastructure to support Shenandoah
>>>>> ???? - Shenandoah test groups
>>>>> ???? - Exclude Shenandoah in various tests that can be run with
>>>>> selected GC
>>>>> ???? - Enable/add configure for Shenandoah for tests that make
>>>>> sense to
>>>>> run with it
>>>>>
>>>>> ??*) shenandoah-tests
>>>>>
>>>>>
>>>>> ???? - Shenandoah specific tests, most reside in gc/shenandoah
>>>>> subdirectory
>>>>> ???? - A couple of tests configurations have been added, e.g.
>>>>> TestGCBasherWithShenandoah.java
>>>>>
>>>>> I intentionally left out shared-compiler for now, because we have some
>>>>> work left to do
>>>>> there, but if you click around you'll find the patch anyway, in
>>>>> case you
>>>>> want to take
>>>>> a peek at it.
>>>>>
>>>>> We have regular builds on:
>>>>> ?? - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>> ?? - {Windows} x {x86_64},
>>>>> ?? - {MacOS X} x {x86_64}
>>>>>
>>>>> This also routinely passes:
>>>>> ?? - the new Shenandoah tests
>>>>> ?? - jcstress with/without aggressive Shenandoah verification
>>>>> ?? - specjvm2008 with/without aggressive Shenandoah verification
>>>>>
>>>>>
>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she
>>>>> deserves
>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>>> teams for tirelessly helping with and reviewing all the GC
>>>>> interface and
>>>>> related changes, and of course the many early adopters for reporting
>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>> without any of you!
>>>>>
>>>>> Best regards,
>>>>> Roman
>>>>>
>>>>
>>>
>>
From per.liden at oracle.com Mon Dec 3 12:45:31 2018
From: per.liden at oracle.com (Per Liden)
Date: Mon, 3 Dec 2018 13:45:31 +0100
Subject: RFR (round 4), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To: <02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
Message-ID: <66f45e27-9e75-42ca-2a9b-c77166d38533@oracle.com>
Hi Roman,
On 11/30/18 10:00 PM, Roman Kennke wrote:
> Hi all,
>
> here comes round 4 of Shenandoah upstreaming review:
>
> This includes fixes for the issues that Per brought up:
> - Verify and gracefully reject dangerous flags combinations that
> disables required barriers
> - Revisited @requires filters in tests
> - Trim unused code from Shenandoah's SA impl
> - Move ShenandoahGCTracer to gc/shenandoah
> - Fix ordering of GC names in various files
> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
Thanks for fixing. Looks good to me, except it looks like you missed
adjusting the macro order in the following files:
src/hotspot/share/gc/shared/gc_globals.hpp
src/hotspot/share/gc/shared/vmStructs_gc.hpp
cheers,
Per
>
> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>
> Thanks everybody for taking time to review this!
> Roman
>
>> Hello all,
>>
>> Thanks so far for all the reviews and support!
>>
>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>
>> Things we've changed today:
>> - We moved shenandoah-specific code out of .ad files into our own .ad
>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>> requires an addition in build machinery though, see
>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>> - Improved zero-disabling and build-code-simplification as suggested by
>> Magnus and Per
>> - Cleaned up some leftovers in C2
>> - Improved C2 loop opts code by introducing another APIs in
>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards now.
>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>> that.
>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>> - Rebased on jdk-12+22
>>
>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>
>> Thanks,
>> Roman
>>
>>> Alright, we fixed:
>>> - The minor issues that Kim reported in shared-gc
>>> - A lot of fixes in shared-tests according to Leonid's review
>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>
>>> Some notes:
>>> Leonid: test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>> correct. The @requires there means to exclude runs with both CMS and
>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>> made the condition a bit clearer by avoiding triple-negation.
>>>
>>> See:
>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>
>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>
>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>> those with ZGC?
>>>
>>> See:
>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>
>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>> next round).
>>>
>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>> better. I can tell that we're not done with C2 yet. Can you look over
>>> the code and see what is ok, and especially what is not ok, so that we
>>> can focus our efforts on the relevant parts?
>>>
>>> Updated set of webrevs:
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>
>>> Thanks,
>>> Roman
>>>
>>>
>>>> Hi,
>>>>
>>>> This is the first round of changes for including Shenandoah GC into
>>>> mainline.
>>>> I divided the review into parts that roughly correspond to the mailing lists
>>>> that would normally review it, and I divided it into 'shared' code
>>>> changes and
>>>> 'shenandoah' code changes (actually, mostly additions). The intend is to
>>>> eventually
>>>> push them as single 'combined' changeset, once reviewed.
>>>>
>>>> JEP:
>>>> ? https://openjdk.java.net/jeps/189
>>>> Bug entry:
>>>>
>>>> ?https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>
>>>> Webrevs:
>>>> ? http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>
>>>> For those who want to see the full change, have a look at the
>>>> shenandoah-complete
>>>>
>>>> directory,
>>>> it contains the full combined webrev. Alternatively, there is the file
>>>> shenandoah-master.patch
>>>> ,
>>>> which is what I intend to commit (and which should be equivalent to the
>>>> 'shenandoah-complete' webrev).
>>>>
>>>> Sections to review (at this point) are the following:
>>>> ?*) shenandoah-gc
>>>>
>>>> ??? - Actual Shenandoah implementation, almost completely residing in
>>>> gc/shenandoah
>>>>
>>>> ?*) shared-gc
>>>>
>>>> ??? - This is mostly boilerplate that is common to any GC
>>>> ??? - referenceProcessor.cpp has a little change to make one assert not
>>>> fail (next to CMS and G1)
>>>> ??? - taskqueue.hpp has some small adjustments to enable subclassing
>>>>
>>>> ?*) shared-serviceability
>>>>
>>>> ??? - The usual code to support another GC
>>>>
>>>> ?*) shared-runtime
>>>>
>>>> ??? - A number of friends declarations to allow Shenandoah iterators to
>>>> hook up with,
>>>> ????? e.g. ClassLoaderData, CodeCache, etc
>>>> ??? - Warning and disabling JFR LeakProfiler
>>>> ??? - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>> Shenandoah C2 optimizations
>>>> ??? - Locks initialization in mutexLocker.cpp as usual
>>>> ??? - VM operations defines for Shenandoah's VM ops
>>>> ??? - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>> Shenandoah's logging
>>>> ??? - The usual macros in macro.hpp
>>>>
>>>> ?*) shared-build
>>>>
>>>> ??? - Add shenandoah feature, enabled by default, as agreed with
>>>> Vladimir K. beforehand
>>>> ??? - Some flags for shenandoah-enabled compilation to get
>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>> ????? and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>> Shenandoah's barriers
>>>> ??? - --param inline-unit-growth=1000 settings for 2 shenandoah source
>>>> files, which is
>>>> ????? useful to get the whole marking loop inlined (observed significant
>>>> regression if we
>>>> ????? don't)
>>>>
>>>> ?*) shared-tests
>>>>
>>>> ??? - Test infrastructure to support Shenandoah
>>>> ??? - Shenandoah test groups
>>>> ??? - Exclude Shenandoah in various tests that can be run with selected GC
>>>> ??? - Enable/add configure for Shenandoah for tests that make sense to
>>>> run with it
>>>>
>>>> ?*) shenandoah-tests
>>>>
>>>> ??? - Shenandoah specific tests, most reside in gc/shenandoah subdirectory
>>>> ??? - A couple of tests configurations have been added, e.g.
>>>> TestGCBasherWithShenandoah.java
>>>>
>>>> I intentionally left out shared-compiler for now, because we have some
>>>> work left to do
>>>> there, but if you click around you'll find the patch anyway, in case you
>>>> want to take
>>>> a peek at it.
>>>>
>>>> We have regular builds on:
>>>> ? - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>> ? - {Windows} x {x86_64},
>>>> ? - {MacOS X} x {x86_64}
>>>>
>>>> This also routinely passes:
>>>> ? - the new Shenandoah tests
>>>> ? - jcstress with/without aggressive Shenandoah verification
>>>> ? - specjvm2008 with/without aggressive Shenandoah verification
>>>>
>>>>
>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she deserves
>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>> teams for tirelessly helping with and reviewing all the GC interface and
>>>> related changes, and of course the many early adopters for reporting
>>>> bugs and success stories and feature requests: we wouldn't be here
>>>> without any of you!
>>>>
>>>> Best regards,
>>>> Roman
>>>>
>>>
>>
>
From rkennke at redhat.com Mon Dec 3 13:24:19 2018
From: rkennke at redhat.com (Roman Kennke)
Date: Mon, 3 Dec 2018 14:24:19 +0100
Subject: RFR (round 4), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To: <66f45e27-9e75-42ca-2a9b-c77166d38533@oracle.com>
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
<66f45e27-9e75-42ca-2a9b-c77166d38533@oracle.com>
Message-ID: <11a96945-7b8e-f30c-0e29-cd532f6addef@redhat.com>
Hi Per,
Thanks for looking again.
I've fixed the ordering in shenandoah-dev:
http://cr.openjdk.java.net/~rkennke/fix-macro-order/webrev.00/
and it will apear in the next round of webrevs.
Thanks,
Roman
> Hi Roman,
>
> On 11/30/18 10:00 PM, Roman Kennke wrote:
>> Hi all,
>>
>> here comes round 4 of Shenandoah upstreaming review:
>>
>> This includes fixes for the issues that Per brought up:
>> - Verify and gracefully reject dangerous flags combinations that
>> disables required barriers
>> - Revisited @requires filters in tests
>> - Trim unused code from Shenandoah's SA impl
>> - Move ShenandoahGCTracer to gc/shenandoah
>> - Fix ordering of GC names in various files
>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>
> Thanks for fixing. Looks good to me, except it looks like you missed
> adjusting the macro order in the following files:
> ?src/hotspot/share/gc/shared/gc_globals.hpp
> ?src/hotspot/share/gc/shared/vmStructs_gc.hpp
>
> cheers,
> Per
>
>>
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>
>> Thanks everybody for taking time to review this!
>> Roman
>>
>>> Hello all,
>>>
>>> Thanks so far for all the reviews and support!
>>>
>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>>
>>> Things we've changed today:
>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>> requires an addition in build machinery though, see
>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>> - Improved zero-disabling and build-code-simplification as suggested by
>>> Magnus and Per
>>> - Cleaned up some leftovers in C2
>>> - Improved C2 loop opts code by introducing another APIs in
>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards
>>> now.
>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>>> that.
>>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>>> - Rebased on jdk-12+22
>>>
>>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>>
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>
>>> Thanks,
>>> Roman
>>>
>>>> Alright, we fixed:
>>>> - The minor issues that Kim reported in shared-gc
>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>
>>>> Some notes:
>>>> Leonid:? test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>> correct. The @requires there means to exclude runs with both CMS and
>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>
>>>>
>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>
>>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>>> those with ZGC?
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>
>>>>
>>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>>> next round).
>>>>
>>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>>> better. I can tell that we're not done with C2 yet. Can you look over
>>>> the code and see what is ok, and especially what is not ok, so that we
>>>> can focus our efforts on the relevant parts?
>>>>
>>>> Updated set of webrevs:
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>
>>>> Thanks,
>>>> Roman
>>>>
>>>>
>>>>> Hi,
>>>>>
>>>>> This is the first round of changes for including Shenandoah GC into
>>>>> mainline.
>>>>> I divided the review into parts that roughly correspond to the
>>>>> mailing lists
>>>>> that would normally review it, and I divided it into 'shared' code
>>>>> changes and
>>>>> 'shenandoah' code changes (actually, mostly additions). The intend
>>>>> is to
>>>>> eventually
>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>
>>>>> JEP:
>>>>> ?? https://openjdk.java.net/jeps/189
>>>>> Bug entry:
>>>>>
>>>>> ??https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>
>>>>> Webrevs:
>>>>> ?? http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>
>>>>> For those who want to see the full change, have a look at the
>>>>> shenandoah-complete
>>>>>
>>>>>
>>>>> directory,
>>>>> it contains the full combined webrev. Alternatively, there is the file
>>>>> shenandoah-master.patch
>>>>> ,
>>>>>
>>>>> which is what I intend to commit (and which should be equivalent to
>>>>> the
>>>>> 'shenandoah-complete' webrev).
>>>>>
>>>>> Sections to review (at this point) are the following:
>>>>> ??*) shenandoah-gc
>>>>>
>>>>>
>>>>> ???? - Actual Shenandoah implementation, almost completely residing in
>>>>> gc/shenandoah
>>>>>
>>>>> ??*) shared-gc
>>>>>
>>>>>
>>>>> ???? - This is mostly boilerplate that is common to any GC
>>>>> ???? - referenceProcessor.cpp has a little change to make one
>>>>> assert not
>>>>> fail (next to CMS and G1)
>>>>> ???? - taskqueue.hpp has some small adjustments to enable subclassing
>>>>>
>>>>> ??*) shared-serviceability
>>>>>
>>>>>
>>>>> ???? - The usual code to support another GC
>>>>>
>>>>> ??*) shared-runtime
>>>>>
>>>>>
>>>>> ???? - A number of friends declarations to allow Shenandoah
>>>>> iterators to
>>>>> hook up with,
>>>>> ?????? e.g. ClassLoaderData, CodeCache, etc
>>>>> ???? - Warning and disabling JFR LeakProfiler
>>>>> ???? - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>> Shenandoah C2 optimizations
>>>>> ???? - Locks initialization in mutexLocker.cpp as usual
>>>>> ???? - VM operations defines for Shenandoah's VM ops
>>>>> ???? - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>> Shenandoah's logging
>>>>> ???? - The usual macros in macro.hpp
>>>>>
>>>>> ??*) shared-build
>>>>>
>>>>>
>>>>> ???? - Add shenandoah feature, enabled by default, as agreed with
>>>>> Vladimir K. beforehand
>>>>> ???? - Some flags for shenandoah-enabled compilation to get
>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>> ?????? and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>> Shenandoah's barriers
>>>>> ???? - --param inline-unit-growth=1000 settings for 2 shenandoah
>>>>> source
>>>>> files, which is
>>>>> ?????? useful to get the whole marking loop inlined (observed
>>>>> significant
>>>>> regression if we
>>>>> ?????? don't)
>>>>>
>>>>> ??*) shared-tests
>>>>>
>>>>>
>>>>> ???? - Test infrastructure to support Shenandoah
>>>>> ???? - Shenandoah test groups
>>>>> ???? - Exclude Shenandoah in various tests that can be run with
>>>>> selected GC
>>>>> ???? - Enable/add configure for Shenandoah for tests that make
>>>>> sense to
>>>>> run with it
>>>>>
>>>>> ??*) shenandoah-tests
>>>>>
>>>>>
>>>>> ???? - Shenandoah specific tests, most reside in gc/shenandoah
>>>>> subdirectory
>>>>> ???? - A couple of tests configurations have been added, e.g.
>>>>> TestGCBasherWithShenandoah.java
>>>>>
>>>>> I intentionally left out shared-compiler for now, because we have some
>>>>> work left to do
>>>>> there, but if you click around you'll find the patch anyway, in
>>>>> case you
>>>>> want to take
>>>>> a peek at it.
>>>>>
>>>>> We have regular builds on:
>>>>> ?? - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>> ?? - {Windows} x {x86_64},
>>>>> ?? - {MacOS X} x {x86_64}
>>>>>
>>>>> This also routinely passes:
>>>>> ?? - the new Shenandoah tests
>>>>> ?? - jcstress with/without aggressive Shenandoah verification
>>>>> ?? - specjvm2008 with/without aggressive Shenandoah verification
>>>>>
>>>>>
>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she
>>>>> deserves
>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>>> teams for tirelessly helping with and reviewing all the GC
>>>>> interface and
>>>>> related changes, and of course the many early adopters for reporting
>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>> without any of you!
>>>>>
>>>>> Best regards,
>>>>> Roman
>>>>>
>>>>
>>>
>>
From volker.simonis at gmail.com Mon Dec 3 13:31:28 2018
From: volker.simonis at gmail.com (Volker Simonis)
Date: Mon, 3 Dec 2018 14:31:28 +0100
Subject: RFR(XS): 8214534: Setting of THIS_FILE in the build is broken
In-Reply-To: <28ef3cc6-7ecd-7625-01c3-514cddf2f2ea@oracle.com>
References:
<28ef3cc6-7ecd-7625-01c3-514cddf2f2ea@oracle.com>
Message-ID:
Hi Magnus, Erik,
do I understand you correctly that you both are fine with my proposed
fix and that we leave all the other enhancements/discussion for the
future?
Thank you and best regards,
Volker
On Mon, Dec 3, 2018 at 12:27 PM Magnus Ihse Bursie
wrote:
>
> On 2018-11-30 19:03, Volker Simonis wrote:
>
> On Fri, Nov 30, 2018 at 6:37 PM Erik Joelsson wrote:
>
> Hello Volker,
>
> The fix looks good. Thanks for finding and fixing it!
>
> Thanks!
>
> Now for some history on why THIS_FILE. The short story is that it's for
> more reproducible and comparable builds.
>
> When we started the build infra project, one of the design decisions was
> to use absolute paths everywhere to avoid having to keep track of the
> current directory, and to make all command lines in the build be simply
> copy and paste in a terminal to rerun.
>
> A consequence of this was that the __FILE__ macro then also expands to
> absolute paths. This made binary build comparisons much harder. Very
> often (especially in the build infra project itself) we use elaborate
> comparison methods to verify that a build change does not change the
> output of the build in any unwanted way. We then introduced the
> THIS_FILE macro to get rid of the absolute paths baked into our binaries
> which got rid of a huge source of binary noise preventing reproducible
> builds.
>
> Note that two different builds with slightly different output
> directories (or in the build-infra project case, completely different
> output structure for generated sources) will generate absolute source
> paths of different lengths. This will cause otherwise equivalent
> binaries to differ greatly due to different alignment, not just because
> of different contents in those strings.
>
> With this change, we could count on object files (at least for GCC) to
> always end up binary equivalent.
>
> In my long term vision, I would like to get the OpenJDK build even more
> reproducible, but it's currently not a high priority task. I would be
> very hard to convince of reducing the level of reproducible output we
> have though.
>
> Thanks for the background information. But as far as I can see, this
> currently only works because "THIS_FILE" is always empty which of
> course makes builds to various locations highly comparable :) On the
> other hand, HotSpot is not using THIS_FILE at all and "__FILE__" quite
> a lot.
>
> No, it's not. It will work just as well when THIS_FILE once more is fixed, since
> /tmp/foo/src/java.base/.../fooimpl.c will have -DTHIS_FILE="fooimpl.c"
> just as
> /home/chthulu/puny_humans_projects/jdk/src/java.base/.../fooimpl.c will have -DTHIS_FILE="fooimpl.c"
>
> So the builds of fooimpl.c will be identical. Or, at least, not dependent on His R'lyehian Highness choice of directory names.
>
> /Magnus
>
>
>
> Don't get me wrong. I highly appreciate the feature of having absolute
> path names in the build to make all command lines in the build
> self-contained (I use that feature every day :). And I also support
> the goal of making builds even more reproducible. But does this goal
> not apply to hotspot (or is it just on the TODO list ?).
>
> In the end, I'm happy with the current, minimal fix which at least
> gets the logs working again.
>
> And maybe for the follow up change we should then better move all
> "__FILE__" occurrences in HotSpot to "THIS_FILE" instead of getting
> rid of "THIS_FILE"?
>
> Best regards,
> Volker
>
> /Erik
>
> On 2018-11-30 09:05, Volker Simonis wrote:
>
> Hi,
>
> can I please have a review for the following trivial fix:
>
> http://cr.openjdk.java.net/~simonis/webrevs/2018/8214534/
> https://bugs.openjdk.java.net/browse/JDK-8214534
>
> DISCLAIMER: "XS" refers to the size of the fix, not the size of the
> explanation :)
>
> Currently the compilation of native files defines "THIS_FILE" to hold
> the name of the current compilation unit. However, setting "THIS_FILE"
> in NativeCompilation.gmk is broken and results in "THIS_FILE" always
> being the empty string. I first thought that this is just a simple
> quoting issue, but after I couldn't get it working, I found the
> following explanation in the GNU Make manual [1]:
>
> "A common mistake is attempting to use $@ within the prerequisites
> list; this will not work. However, there is a special feature of GNU
> make, secondary expansion (see Secondary Expansion), which will allow
> automatic variable values to be used in prerequisite lists."
>
> I'm not a Make expert, but I think this quote doesn't apply to "$@"
> only, but to all automatic variables. The proposed solution (i.e.
> "Secondary Expansion" [2]) seems overly complex for this problem. I
> think the solution in the patch is much simpler and works "just as
> well" :)
>
> The other question is of course why do we need "THIS_FILE" at all? It
> is used for various native logs in the class library (not in HotSpot)
> which use the value of "THIS_FILE" to decorate their output with the
> current file name. On the other hand, we already have the standard,
> predefined "__FILE__" macro which could be used instead (and indeed,
> if "THIS_FILE" isn't defined, the various logging routines fall back
> to using "__FILE__").
>
> The only explanation I could come up for having "THIS_FILE" until now
> is that "__FILE__" may contain the full path name of the compilation
> unit while we only want the simple file name (without path) in the
> log. However, in order to solve this "path" problem, we can use
> simpler solutions.
>
> Some call sites (e.g.
> "src/jdk.jdwp.agent/share/native/libjdwp/log_messages.h") already use
> helper functions like "file_basename()" to cut off a potential path
> component from "THIS_FILE". Other call sites (e.g.
> "src/java.instrument/share/native/libinstrument/JPLISAssert.h" or
> "src/jdk.jdwp.agent/share/native/libjdwp/error_messages.h") currently
> simply use the value of "THIS_FILE" directly. But they could be easily
> fixed by either using "file_basename()" there as well or even simpler,
> wrapping "__FILE__" into another macro which calls "strrchr()" to do
> the same work.
>
> So as a follow up to this change, I'd like to propose another change
> which completely removes "THIS_FILE" and changes all users of
> "THIS_FILE" to use "__FILE__" instead. This would also shorten our
> compile command lines (which doesn't happen too often :) What do you
> think?
>
> Thank you and best regards,
> Volker
>
> [1] https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html
> [2] https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html#Secondary-Expansion
>
>
From magnus.ihse.bursie at oracle.com Mon Dec 3 13:35:06 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Mon, 3 Dec 2018 14:35:06 +0100
Subject: RFR(XS): 8214534: Setting of THIS_FILE in the build is broken
In-Reply-To:
References:
<28ef3cc6-7ecd-7625-01c3-514cddf2f2ea@oracle.com>
Message-ID: <4c6d97ec-dfb8-72aa-550c-28d2c08df427@oracle.com>
On 2018-12-03 14:31, Volker Simonis wrote:
> Hi Magnus, Erik,
>
> do I understand you correctly that you both are fine with my proposed
> fix and that we leave all the other enhancements/discussion for the
> future?
Yes, sorry I was not clear. Your fix looks good to me.
We can save the rest of the discussion of reproducible builds for a
rainy day.
/Magnus
>
> Thank you and best regards,
> Volker
>
> On Mon, Dec 3, 2018 at 12:27 PM Magnus Ihse Bursie
> wrote:
>> On 2018-11-30 19:03, Volker Simonis wrote:
>>
>> On Fri, Nov 30, 2018 at 6:37 PM Erik Joelsson wrote:
>>
>> Hello Volker,
>>
>> The fix looks good. Thanks for finding and fixing it!
>>
>> Thanks!
>>
>> Now for some history on why THIS_FILE. The short story is that it's for
>> more reproducible and comparable builds.
>>
>> When we started the build infra project, one of the design decisions was
>> to use absolute paths everywhere to avoid having to keep track of the
>> current directory, and to make all command lines in the build be simply
>> copy and paste in a terminal to rerun.
>>
>> A consequence of this was that the __FILE__ macro then also expands to
>> absolute paths. This made binary build comparisons much harder. Very
>> often (especially in the build infra project itself) we use elaborate
>> comparison methods to verify that a build change does not change the
>> output of the build in any unwanted way. We then introduced the
>> THIS_FILE macro to get rid of the absolute paths baked into our binaries
>> which got rid of a huge source of binary noise preventing reproducible
>> builds.
>>
>> Note that two different builds with slightly different output
>> directories (or in the build-infra project case, completely different
>> output structure for generated sources) will generate absolute source
>> paths of different lengths. This will cause otherwise equivalent
>> binaries to differ greatly due to different alignment, not just because
>> of different contents in those strings.
>>
>> With this change, we could count on object files (at least for GCC) to
>> always end up binary equivalent.
>>
>> In my long term vision, I would like to get the OpenJDK build even more
>> reproducible, but it's currently not a high priority task. I would be
>> very hard to convince of reducing the level of reproducible output we
>> have though.
>>
>> Thanks for the background information. But as far as I can see, this
>> currently only works because "THIS_FILE" is always empty which of
>> course makes builds to various locations highly comparable :) On the
>> other hand, HotSpot is not using THIS_FILE at all and "__FILE__" quite
>> a lot.
>>
>> No, it's not. It will work just as well when THIS_FILE once more is fixed, since
>> /tmp/foo/src/java.base/.../fooimpl.c will have -DTHIS_FILE="fooimpl.c"
>> just as
>> /home/chthulu/puny_humans_projects/jdk/src/java.base/.../fooimpl.c will have -DTHIS_FILE="fooimpl.c"
>>
>> So the builds of fooimpl.c will be identical. Or, at least, not dependent on His R'lyehian Highness choice of directory names.
>>
>> /Magnus
>>
>>
>>
>> Don't get me wrong. I highly appreciate the feature of having absolute
>> path names in the build to make all command lines in the build
>> self-contained (I use that feature every day :). And I also support
>> the goal of making builds even more reproducible. But does this goal
>> not apply to hotspot (or is it just on the TODO list ?).
>>
>> In the end, I'm happy with the current, minimal fix which at least
>> gets the logs working again.
>>
>> And maybe for the follow up change we should then better move all
>> "__FILE__" occurrences in HotSpot to "THIS_FILE" instead of getting
>> rid of "THIS_FILE"?
>>
>> Best regards,
>> Volker
>>
>> /Erik
>>
>> On 2018-11-30 09:05, Volker Simonis wrote:
>>
>> Hi,
>>
>> can I please have a review for the following trivial fix:
>>
>> http://cr.openjdk.java.net/~simonis/webrevs/2018/8214534/
>> https://bugs.openjdk.java.net/browse/JDK-8214534
>>
>> DISCLAIMER: "XS" refers to the size of the fix, not the size of the
>> explanation :)
>>
>> Currently the compilation of native files defines "THIS_FILE" to hold
>> the name of the current compilation unit. However, setting "THIS_FILE"
>> in NativeCompilation.gmk is broken and results in "THIS_FILE" always
>> being the empty string. I first thought that this is just a simple
>> quoting issue, but after I couldn't get it working, I found the
>> following explanation in the GNU Make manual [1]:
>>
>> "A common mistake is attempting to use $@ within the prerequisites
>> list; this will not work. However, there is a special feature of GNU
>> make, secondary expansion (see Secondary Expansion), which will allow
>> automatic variable values to be used in prerequisite lists."
>>
>> I'm not a Make expert, but I think this quote doesn't apply to "$@"
>> only, but to all automatic variables. The proposed solution (i.e.
>> "Secondary Expansion" [2]) seems overly complex for this problem. I
>> think the solution in the patch is much simpler and works "just as
>> well" :)
>>
>> The other question is of course why do we need "THIS_FILE" at all? It
>> is used for various native logs in the class library (not in HotSpot)
>> which use the value of "THIS_FILE" to decorate their output with the
>> current file name. On the other hand, we already have the standard,
>> predefined "__FILE__" macro which could be used instead (and indeed,
>> if "THIS_FILE" isn't defined, the various logging routines fall back
>> to using "__FILE__").
>>
>> The only explanation I could come up for having "THIS_FILE" until now
>> is that "__FILE__" may contain the full path name of the compilation
>> unit while we only want the simple file name (without path) in the
>> log. However, in order to solve this "path" problem, we can use
>> simpler solutions.
>>
>> Some call sites (e.g.
>> "src/jdk.jdwp.agent/share/native/libjdwp/log_messages.h") already use
>> helper functions like "file_basename()" to cut off a potential path
>> component from "THIS_FILE". Other call sites (e.g.
>> "src/java.instrument/share/native/libinstrument/JPLISAssert.h" or
>> "src/jdk.jdwp.agent/share/native/libjdwp/error_messages.h") currently
>> simply use the value of "THIS_FILE" directly. But they could be easily
>> fixed by either using "file_basename()" there as well or even simpler,
>> wrapping "__FILE__" into another macro which calls "strrchr()" to do
>> the same work.
>>
>> So as a follow up to this change, I'd like to propose another change
>> which completely removes "THIS_FILE" and changes all users of
>> "THIS_FILE" to use "__FILE__" instead. This would also shorten our
>> compile command lines (which doesn't happen too often :) What do you
>> think?
>>
>> Thank you and best regards,
>> Volker
>>
>> [1] https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html
>> [2] https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html#Secondary-Expansion
>>
>>
From volker.simonis at gmail.com Mon Dec 3 13:39:48 2018
From: volker.simonis at gmail.com (Volker Simonis)
Date: Mon, 3 Dec 2018 14:39:48 +0100
Subject: RFR(XS): 8214534: Setting of THIS_FILE in the build is broken
In-Reply-To: <4c6d97ec-dfb8-72aa-550c-28d2c08df427@oracle.com>
References:
<28ef3cc6-7ecd-7625-01c3-514cddf2f2ea@oracle.com>
<4c6d97ec-dfb8-72aa-550c-28d2c08df427@oracle.com>
Message-ID:
Cool, thanks!
I'll push then...
On Mon, Dec 3, 2018 at 2:37 PM Magnus Ihse Bursie
wrote:
>
> On 2018-12-03 14:31, Volker Simonis wrote:
>
> Hi Magnus, Erik,
>
> do I understand you correctly that you both are fine with my proposed
> fix and that we leave all the other enhancements/discussion for the
> future?
>
> Yes, sorry I was not clear. Your fix looks good to me.
>
> We can save the rest of the discussion of reproducible builds for a rainy day.
>
> /Magnus
>
> Thank you and best regards,
> Volker
>
> On Mon, Dec 3, 2018 at 12:27 PM Magnus Ihse Bursie
> wrote:
>
> On 2018-11-30 19:03, Volker Simonis wrote:
>
> On Fri, Nov 30, 2018 at 6:37 PM Erik Joelsson wrote:
>
> Hello Volker,
>
> The fix looks good. Thanks for finding and fixing it!
>
> Thanks!
>
> Now for some history on why THIS_FILE. The short story is that it's for
> more reproducible and comparable builds.
>
> When we started the build infra project, one of the design decisions was
> to use absolute paths everywhere to avoid having to keep track of the
> current directory, and to make all command lines in the build be simply
> copy and paste in a terminal to rerun.
>
> A consequence of this was that the __FILE__ macro then also expands to
> absolute paths. This made binary build comparisons much harder. Very
> often (especially in the build infra project itself) we use elaborate
> comparison methods to verify that a build change does not change the
> output of the build in any unwanted way. We then introduced the
> THIS_FILE macro to get rid of the absolute paths baked into our binaries
> which got rid of a huge source of binary noise preventing reproducible
> builds.
>
> Note that two different builds with slightly different output
> directories (or in the build-infra project case, completely different
> output structure for generated sources) will generate absolute source
> paths of different lengths. This will cause otherwise equivalent
> binaries to differ greatly due to different alignment, not just because
> of different contents in those strings.
>
> With this change, we could count on object files (at least for GCC) to
> always end up binary equivalent.
>
> In my long term vision, I would like to get the OpenJDK build even more
> reproducible, but it's currently not a high priority task. I would be
> very hard to convince of reducing the level of reproducible output we
> have though.
>
> Thanks for the background information. But as far as I can see, this
> currently only works because "THIS_FILE" is always empty which of
> course makes builds to various locations highly comparable :) On the
> other hand, HotSpot is not using THIS_FILE at all and "__FILE__" quite
> a lot.
>
> No, it's not. It will work just as well when THIS_FILE once more is fixed, since
> /tmp/foo/src/java.base/.../fooimpl.c will have -DTHIS_FILE="fooimpl.c"
> just as
> /home/chthulu/puny_humans_projects/jdk/src/java.base/.../fooimpl.c will have -DTHIS_FILE="fooimpl.c"
>
> So the builds of fooimpl.c will be identical. Or, at least, not dependent on His R'lyehian Highness choice of directory names.
>
> /Magnus
>
>
>
> Don't get me wrong. I highly appreciate the feature of having absolute
> path names in the build to make all command lines in the build
> self-contained (I use that feature every day :). And I also support
> the goal of making builds even more reproducible. But does this goal
> not apply to hotspot (or is it just on the TODO list ?).
>
> In the end, I'm happy with the current, minimal fix which at least
> gets the logs working again.
>
> And maybe for the follow up change we should then better move all
> "__FILE__" occurrences in HotSpot to "THIS_FILE" instead of getting
> rid of "THIS_FILE"?
>
> Best regards,
> Volker
>
> /Erik
>
> On 2018-11-30 09:05, Volker Simonis wrote:
>
> Hi,
>
> can I please have a review for the following trivial fix:
>
> http://cr.openjdk.java.net/~simonis/webrevs/2018/8214534/
> https://bugs.openjdk.java.net/browse/JDK-8214534
>
> DISCLAIMER: "XS" refers to the size of the fix, not the size of the
> explanation :)
>
> Currently the compilation of native files defines "THIS_FILE" to hold
> the name of the current compilation unit. However, setting "THIS_FILE"
> in NativeCompilation.gmk is broken and results in "THIS_FILE" always
> being the empty string. I first thought that this is just a simple
> quoting issue, but after I couldn't get it working, I found the
> following explanation in the GNU Make manual [1]:
>
> "A common mistake is attempting to use $@ within the prerequisites
> list; this will not work. However, there is a special feature of GNU
> make, secondary expansion (see Secondary Expansion), which will allow
> automatic variable values to be used in prerequisite lists."
>
> I'm not a Make expert, but I think this quote doesn't apply to "$@"
> only, but to all automatic variables. The proposed solution (i.e.
> "Secondary Expansion" [2]) seems overly complex for this problem. I
> think the solution in the patch is much simpler and works "just as
> well" :)
>
> The other question is of course why do we need "THIS_FILE" at all? It
> is used for various native logs in the class library (not in HotSpot)
> which use the value of "THIS_FILE" to decorate their output with the
> current file name. On the other hand, we already have the standard,
> predefined "__FILE__" macro which could be used instead (and indeed,
> if "THIS_FILE" isn't defined, the various logging routines fall back
> to using "__FILE__").
>
> The only explanation I could come up for having "THIS_FILE" until now
> is that "__FILE__" may contain the full path name of the compilation
> unit while we only want the simple file name (without path) in the
> log. However, in order to solve this "path" problem, we can use
> simpler solutions.
>
> Some call sites (e.g.
> "src/jdk.jdwp.agent/share/native/libjdwp/log_messages.h") already use
> helper functions like "file_basename()" to cut off a potential path
> component from "THIS_FILE". Other call sites (e.g.
> "src/java.instrument/share/native/libinstrument/JPLISAssert.h" or
> "src/jdk.jdwp.agent/share/native/libjdwp/error_messages.h") currently
> simply use the value of "THIS_FILE" directly. But they could be easily
> fixed by either using "file_basename()" there as well or even simpler,
> wrapping "__FILE__" into another macro which calls "strrchr()" to do
> the same work.
>
> So as a follow up to this change, I'd like to propose another change
> which completely removes "THIS_FILE" and changes all users of
> "THIS_FILE" to use "__FILE__" instead. This would also shorten our
> compile command lines (which doesn't happen too often :) What do you
> think?
>
> Thank you and best regards,
> Volker
>
> [1] https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html
> [2] https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html#Secondary-Expansion
>
>
>
From magnus.ihse.bursie at oracle.com Mon Dec 3 14:19:35 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Mon, 3 Dec 2018 15:19:35 +0100
Subject: RFR: JDK-8214710 Fix hg log in update_copyright_year.sh
Message-ID: <390c437b-2886-5e19-cd79-ebfaa16aa851@oracle.com>
The commands for hg log is missing -l1, which will limit the log to just
the revision specified. Instead, all revisions from repo creation will
now be included, and the script fails to work.
I will publish a separate changeset with missed copyright year updates
in the build system.
Bug: https://bugs.openjdk.java.net/browse/JDK-8214710
WebRev:
http://cr.openjdk.java.net/~ihse/JDK-8214710-fix-update-copyright-year/webrev.01
/Magnus
From magnus.ihse.bursie at oracle.com Mon Dec 3 16:10:17 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Mon, 3 Dec 2018 17:10:17 +0100
Subject: RFR: JDK-8214710 Fix hg log in update_copyright_year.sh
Message-ID:
The commands for hg log is missing -l1, which will limit the log to just
the revision specified. Instead, all revisions from repo creation will
now be included, and the script fails to work.
I will publish a separate changeset with missed copyright year updates
in the build system.
Bug: https://bugs.openjdk.java.net/browse/JDK-8214710
WebRev:
http://cr.openjdk.java.net/~ihse/JDK-8214710-fix-update-copyright-year/webrev.01
/Magnus
From magnus.ihse.bursie at oracle.com Mon Dec 3 16:15:29 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Mon, 3 Dec 2018 17:15:29 +0100
Subject: RFR: JDK-8214710 Fix hg log in update_copyright_year.sh
Message-ID: <1B8B176E-A699-42A8-B223-DDAA2AFA7C87@oracle.com>
The commands for hg log is missing -l1, which will limit the log to just the revision specified. Instead, all revisions from repo creation will now be included, and the script fails to work.
I will publish a separate changeset with missed copyright year updates in the build system.
Bug: https://bugs.openjdk.java.net/browse/JDK-8214710
WebRev: http://cr.openjdk.java.net/~ihse/JDK-8214710-fix-update-copyright-year/webrev.01
/Magnus
From Alan.Bateman at oracle.com Mon Dec 3 16:16:19 2018
From: Alan.Bateman at oracle.com (Alan Bateman)
Date: Mon, 3 Dec 2018 16:16:19 +0000
Subject: RFR: JDK-8214710 Fix hg log in update_copyright_year.sh
In-Reply-To:
References:
Message-ID:
On 03/12/2018 16:10, Magnus Ihse Bursie wrote:
> The commands for hg log is missing -l1, which will limit the log to
> just the revision specified. Instead, all revisions from repo creation
> will now be included, and the script fails to work.
>
> I will publish a separate changeset with missed copyright year updates
> in the build system.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8214710
> WebRev:
> http://cr.openjdk.java.net/~ihse/JDK-8214710-fix-update-copyright-year/webrev.01
>
This looks okay to me.
For the follow-on "missing copyright year updates" then maybe the entire
source should be done rather than doing it in piecemeal.
-Alan
From magnus.ihse.bursie at oracle.com Mon Dec 3 16:30:40 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Mon, 3 Dec 2018 17:30:40 +0100
Subject: RFR: JDK-8214718 Update missing copyright year in build system
Message-ID: <6b0b9aea-517a-a857-ded3-33c00633e1fc@oracle.com>
Not all changes in 2018 in the build system were accompanied by updates
of the copyright year. Add 2018 to files that were actually modified in
2018, but did not get the copyright line updated.
I have found this list by running the update_copyright_year script, and
then manually verified that the files were indeed modified in 2018, and
was not a "dummy" change (such as modifying the copyright header...).
Files with "dummy" changes were reverted. I have also manually verified
that the script did indeed rewrite the header correctly. (I do not trust
scripts... The only good script is a dead scr... nah. But I do not trust
them.)
As usual, the easiest way to review a change like this is to look at the
patch file in webrev.
Bug: https://bugs.openjdk.java.net/browse/JDK-8214718
WebRev:
http://cr.openjdk.java.net/~ihse/JDK-8214718-update-missing-copyright-year-2018/webrev.01
And, for reference, here is the list of the latest changes for every
file I've updated:
Latest entry for bin/idea.sh
changeset:?? 52517:59065e5d56ec
user:??????? stuefe
date:??????? Wed Nov 14 09:19:31 2018 +0100
summary:???? 8213591: running bin/idea.sh in Cygwin: generated project
cannot be imported
Latest entry for make/BuildStatic.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/Bundles.gmk
changeset:?? 52774:56ca125c973b
user:??????? shurailine
date:??????? Thu Nov 29 06:34:46 2018 -0800
summary:???? 8214309: Enhance makefiles to allow generating JCov
instrumented build
Latest entry for make/CompileDemos.gmk
changeset:?? 50831:59c6972e39fa
user:??????? prr
date:??????? Fri Jun 22 13:21:23 2018 -0700
summary:???? 8205494: Convert or remove all AWT applet demos
Latest entry for make/CompileToolsHotspot.gmk
changeset:?? 50330:2cbc42a5764b
user:??????? dlong
date:??????? Thu May 31 10:38:05 2018 -0700
summary:???? 8202670: Update Graal
Latest entry for make/CopyInterimCLDRConverter.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/CreateBuildJdkCopy.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/CreateJmods.gmk
changeset:?? 50142:f348e5d4769b
user:??????? erikj
date:??????? Fri May 11 08:39:21 2018 -0700
summary:???? 8202914: Let custom makefile override jmod intput dir locations
Latest entry for make/GenerateModuleSummary.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/GensrcModuleInfo.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/InterimImage.gmk
changeset:?? 49207:2a25589b5971
user:??????? redestad
date:??????? Mon Mar 12 19:36:59 2018 +0100
summary:???? 8199469: Disable generate-jli-classes when building
interim-image
Latest entry for make/ZipSource.gmk
changeset:?? 50590:5fa19bad622d
user:??????? erikj
date:??????? Fri Jun 15 09:53:28 2018 -0700
summary:???? 8204973: Add build support for filtering translations
Latest entry for make/autoconf/boot-jdk.m4
changeset:?? 51822:f3c1945fa8aa
user:??????? ihse
date:??????? Thu Sep 20 18:39:53 2018 +0200
summary:???? 8210960: Allow --with-boot-jdk-jvmargs to work during configure
Latest entry for make/autoconf/build-aux/config.guess
changeset:?? 50311:04c8eba70a59
user:??????? erikj
date:??????? Wed May 30 09:45:24 2018 -0700
summary:???? 8204091: Configure broken on MIPS when uname returns mipsel
or mips64el
Latest entry for make/autoconf/jdk-version.m4
changeset:?? 52724:0bdbf854472f
user:??????? rriggs
date:??????? Wed Nov 28 15:53:49 2018 -0500
summary:???? 4947890: Minimize JNI upcalls in system-properties
initialization
Latest entry for make/autoconf/lib-bundled.m4
changeset:?? 48758:ba19a21d727d
user:??????? erikj
date:??????? Wed Feb 07 09:48:43 2018 -0800
summary:???? 8196951: jdk build fails with clang: error: no such file or
directory: '@LIBZ_CFLAGS@'
Latest entry for make/autoconf/toolchain_windows.m4
changeset:?? 50639:c12c79a49ca2
user:??????? erikj
date:??????? Tue Jun 19 16:44:41 2018 +0200
summary:???? 8205183: Warning about using VS2017 should be removed
Latest entry for make/common/JarArchive.gmk
changeset:?? 52595:16609197022c
user:??????? redestad
date:??????? Fri Nov 16 23:39:51 2018 +0100
summary:???? 8061281: Microbenchmark suite build support, directory
layout and sample benchmarks
Latest entry for make/common/JavaCompilation.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/common/TextFileProcessing.gmk
changeset:?? 48943:e61816fc5276
user:??????? erikj
date:??????? Fri Feb 23 22:09:16 2018 +0100
summary:???? 8198569: SetupTextFileProcessing should use sed with 'g'
Latest entry for make/common/ZipArchive.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/copy/Copy-java.desktop.gmk
changeset:?? 49537:149dc554808c
user:??????? erikj
date:??????? Thu Apr 05 23:46:05 2018 +0200
summary:???? 8199539: Provide a standard way for the build to filter
un-needed legal .md files
Latest entry for make/copy/CopyCommon.gmk
changeset:?? 49540:9704789737c1
user:??????? erikj
date:??????? Fri Apr 06 02:52:24 2018 +0200
summary:???? 8201222: JDK-8199539 broke the OpenJDK build
Latest entry for make/data/fontconfig/macosx.fontconfig.properties
changeset:?? 50348:008f416a79cb
user:??????? prr
date:??????? Fri May 25 16:23:17 2018 -0700
summary:???? 8191522: Remove Bigelow&Holmes Lucida fonts from JDK sources
Latest entry for make/data/fontconfig/solaris.fontconfig.properties
changeset:?? 50348:008f416a79cb
user:??????? prr
date:??????? Fri May 25 16:23:17 2018 -0700
summary:???? 8191522: Remove Bigelow&Holmes Lucida fonts from JDK sources
Latest entry for make/data/fontconfig/windows.fontconfig.properties
changeset:?? 50836:b9456394d24f
user:??????? pkbalakr
date:??????? Mon Jun 25 16:01:01 2018 +0530
summary:???? 8202696: Remove exclusion range for phonetic chars in
windows fontconfig.properties
Latest entry for make/devkit/createMacosxDevkit6.sh
changeset:?? 48755:fe377d6591ef
user:??????? erikj
date:??????? Tue Feb 06 16:33:38 2018 -0800
summary:???? 8196895: Create devkit for Macosx with Xcode 9.2
Latest entry for make/devkit/createSolarisDevkit12.4.sh
changeset:?? 48919:c7e84c0a51c3
user:??????? erikj
date:??????? Tue Feb 20 07:51:51 2018 -0800
summary:???? 8198328: Create devkit for Solaris with developer studio
12.6 and Solaris11.3
Latest entry for make/devkit/createWindowsDevkit2013.sh
changeset:?? 48678:bcce1fa183e7
user:??????? erikj
date:??????? Mon Jan 29 17:58:12 2018 +0100
summary:???? 8196108: Add build support for VS 2015/2017
Latest entry for make/gendata/GendataFontConfig.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/gendata/GendataHtml32dtd.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/gendata/GendataTZDB.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/gensrc/Gensrc-jdk.localedata.gmk
changeset:?? 50590:5fa19bad622d
user:??????? erikj
date:??????? Fri Jun 15 09:53:28 2018 -0700
summary:???? 8204973: Add build support for filtering translations
Latest entry for make/gensrc/GensrcCharsetCoder.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/gensrc/GensrcCommonLangtools.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/gensrc/GensrcLocaleData.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/gensrc/GensrcMisc.gmk
changeset:?? 52724:0bdbf854472f
user:??????? rriggs
date:??????? Wed Nov 28 15:53:49 2018 -0500
summary:???? 4947890: Minimize JNI upcalls in system-properties
initialization
Latest entry for make/gensrc/GensrcModuleLoaderMap.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/gensrc/GensrcSwing.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/gensrc/GensrcVarHandles.gmk
changeset:?? 52220:9c260a6b6471
user:??????? mchung
date:??????? Mon Oct 22 17:00:04 2018 -0700
summary:???? 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to
xxxReference
Latest entry for make/hotspot/gensrc/GenerateSources.gmk
changeset:?? 50113:caf115bb98ad
user:??????? egahlin
date:??????? Tue May 15 20:24:34 2018 +0200
summary:???? 8199712: Flight Recorder
Latest entry for
make/hotspot/src/classes/build/tools/projectcreator/BuildConfig.java
changeset:?? 50113:caf115bb98ad
user:??????? egahlin
date:??????? Tue May 15 20:24:34 2018 +0200
summary:???? 8199712: Flight Recorder
Latest entry for
make/jdk/src/classes/build/tools/classlist/HelloClasslist.java
changeset:?? 52177:430e6421d503
user:??????? redestad
date:??????? Wed Oct 17 17:35:26 2018 +0200
summary:???? 8212597: Optimize String concatenation setup when using
primitive operands
Latest entry for
make/jdk/src/classes/build/tools/module/GenModuleInfoSource.java
changeset:?? 51499:fdd768b9865e
user:??????? mchung
date:??????? Wed Aug 22 13:47:47 2018 -0500
summary:???? 8167314: Enable the check to detect duplicate provides in
in GenModuleInfoSource
Latest entry for
make/jdk/src/classes/build/tools/module/ModuleInfoExtraTest.java
changeset:?? 51499:fdd768b9865e
user:??????? mchung
date:??????? Wed Aug 22 13:47:47 2018 -0500
summary:???? 8167314: Enable the check to detect duplicate provides in
in GenModuleInfoSource
Latest entry for make/langtools/build.xml
changeset:?? 51565:7e5f08c619e3
user:??????? mcimadamore
date:??????? Wed Aug 29 11:25:51 2018 +0100
summary:???? 8209064: Make intellij support more robust after changes
for 2018.2
Latest entry for
make/langtools/intellij/template/src/idea/LangtoolsIdeaAntLogger.java
changeset:?? 51565:7e5f08c619e3
user:??????? mcimadamore
date:??????? Wed Aug 29 11:25:51 2018 +0100
summary:???? 8209064: Make intellij support more robust after changes
for 2018.2
Latest entry for make/langtools/tools/propertiesparser/PropertiesParser.java
changeset:?? 51737:30e6a0b9d691
user:??????? ihse
date:??????? Fri Sep 14 09:16:51 2018 +0200
summary:???? 8210731: PropertiesParser does not produce reproducible output
Latest entry for
make/langtools/tools/propertiesparser/gen/ClassGenerator.java
changeset:?? 51985:08c296fe9458
user:??????? cushon
date:??????? Mon Oct 01 21:14:58 2018 -0700
summary:???? 8211057: Gensrc step CompileProperties generates unstable
CompilerProperties output
Latest entry for make/launcher/Launcher-jdk.aot.gmk
changeset:?? 50104:4ea7917929b9
user:??????? aph
date:??????? Mon May 14 12:03:59 2018 +0100
summary:???? 8185505: AArch64: Port AOT to AArch64
Latest entry for make/nashorn/build.xml
changeset:?? 52783:5827f12ecbf0
user:??????? hannesw
date:??????? Fri Nov 30 15:43:37 2018 +0100
summary:???? 8214525: Bit rot in Nashorn Ant script
Latest entry for make/rmic/Rmic-java.management.rmi.gmk
changeset:?? 52065:dea8a62cdfc3
user:??????? erikj
date:??????? Tue Oct 09 14:57:23 2018 -0700
summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
Latest entry for make/scripts/compare_exceptions.sh.incl
changeset:?? 51781:dd737bf6abde
user:??????? ihse
date:??????? Tue Sep 18 10:35:42 2018 +0200
summary:???? 8210750: Clean up compare.sh exceptions
/Magnus
From magnus.ihse.bursie at oracle.com Mon Dec 3 16:35:39 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Mon, 3 Dec 2018 17:35:39 +0100
Subject: RFR: JDK-8214710 Fix hg log in update_copyright_year.sh
In-Reply-To:
References:
Message-ID:
On 2018-12-03 17:16, Alan Bateman wrote:
>
>
> On 03/12/2018 16:10, Magnus Ihse Bursie wrote:
>> The commands for hg log is missing -l1, which will limit the log to
>> just the revision specified. Instead, all revisions from repo
>> creation will now be included, and the script fails to work.
>>
>> I will publish a separate changeset with missed copyright year
>> updates in the build system.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8214710
>> WebRev:
>> http://cr.openjdk.java.net/~ihse/JDK-8214710-fix-update-copyright-year/webrev.01
>>
> This looks okay to me.
Thanks.
>
> For the follow-on "missing copyright year updates" then maybe the
> entire source should be done rather than doing it in piecemeal.
I just created JDK-8214718... Anyway, I'm not sure that's a good idea.
The script gives an indication of files that should be updated, but it's
not 100% correct and someone will need to verify that it does not
trigger for changes that should not result in a copyright year update
(like updating the copyright header). The script, as it is, tries to
filter out changesets that it should not consider, but that looked very
brittle, and I did in fact remove that check before running the script
on the build system code. Perhaps not component knowledge is needed, but
laying the burden on a single person to do this grunt work for all of
the code base is perhaps not fair either. For me, I'd like to know that
the code I'm responsible for is correct.
/Magnus
From tim.bell at oracle.com Mon Dec 3 16:45:21 2018
From: tim.bell at oracle.com (Tim Bell)
Date: Mon, 03 Dec 2018 08:45:21 -0800
Subject: RFR: JDK-8214311 dtrace gensrc has missing dependencies
In-Reply-To: <0d6a5a5c-2772-62d5-da6b-707eee59253f@oracle.com>
References: <0d6a5a5c-2772-62d5-da6b-707eee59253f@oracle.com>
Message-ID: <5C055DA1.1070503@oracle.com>
Magnus:
> Building with JOBS=1 on solaris discovered that the dtrace gensrc has
> not all dependencies properly declared. This has not been discovered
> until now, since Solaris machines is typically very parallel, and the
> needed prerequisites has just happened to have been generated before.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8214311
> WebRev:
> http://cr.openjdk.java.net/~ihse/JDK-8214311-fix-dtrace-gensrc-dependencies/webrev.01
Looks good.
Tim
From tim.bell at oracle.com Mon Dec 3 16:46:21 2018
From: tim.bell at oracle.com (Tim Bell)
Date: Mon, 03 Dec 2018 08:46:21 -0800
Subject: RFR: JDK-8214710 Fix hg log in update_copyright_year.sh
In-Reply-To:
References:
Message-ID: <5C055DDD.9030302@oracle.com>
Magnus:
On 12/03/18 08:16, Alan Bateman wrote:
>
>
> On 03/12/2018 16:10, Magnus Ihse Bursie wrote:
>> The commands for hg log is missing -l1, which will limit the log to
>> just the revision specified. Instead, all revisions from repo creation
>> will now be included, and the script fails to work.
>>
>> I will publish a separate changeset with missed copyright year updates
>> in the build system.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8214710
>> WebRev:
>> http://cr.openjdk.java.net/~ihse/JDK-8214710-fix-update-copyright-year/webrev.01
>>
>>
> This looks okay to me.
>
> For the follow-on "missing copyright year updates" then maybe the entire
> source should be done rather than doing it in piecemeal.
>
> -Alan
Looks good to me as well.
Tim
From erik.joelsson at oracle.com Mon Dec 3 17:35:32 2018
From: erik.joelsson at oracle.com (Erik Joelsson)
Date: Mon, 3 Dec 2018 09:35:32 -0800
Subject: RFR: JDK-8214718 Update missing copyright year in build system
In-Reply-To: <6b0b9aea-517a-a857-ded3-33c00633e1fc@oracle.com>
References: <6b0b9aea-517a-a857-ded3-33c00633e1fc@oracle.com>
Message-ID: <5245aa37-ffa2-d8be-f396-6b1eafd3a96d@oracle.com>
Looks good.
/Erik
On 2018-12-03 08:30, Magnus Ihse Bursie wrote:
> Not all changes in 2018 in the build system were accompanied by
> updates of the copyright year. Add 2018 to files that were actually
> modified in 2018, but did not get the copyright line updated.
>
> I have found this list by running the update_copyright_year script,
> and then manually verified that the files were indeed modified in
> 2018, and was not a "dummy" change (such as modifying the copyright
> header...). Files with "dummy" changes were reverted. I have also
> manually verified that the script did indeed rewrite the header
> correctly. (I do not trust scripts... The only good script is a dead
> scr... nah. But I do not trust them.)
>
> As usual, the easiest way to review a change like this is to look at
> the patch file in webrev.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8214718
> WebRev:
> http://cr.openjdk.java.net/~ihse/JDK-8214718-update-missing-copyright-year-2018/webrev.01
>
> And, for reference, here is the list of the latest changes for every
> file I've updated:
>
> Latest entry for bin/idea.sh
> changeset:?? 52517:59065e5d56ec
> user:??????? stuefe
> date:??????? Wed Nov 14 09:19:31 2018 +0100
> summary:???? 8213591: running bin/idea.sh in Cygwin: generated project
> cannot be imported
>
> Latest entry for make/BuildStatic.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/Bundles.gmk
> changeset:?? 52774:56ca125c973b
> user:??????? shurailine
> date:??????? Thu Nov 29 06:34:46 2018 -0800
> summary:???? 8214309: Enhance makefiles to allow generating JCov
> instrumented build
>
> Latest entry for make/CompileDemos.gmk
> changeset:?? 50831:59c6972e39fa
> user:??????? prr
> date:??????? Fri Jun 22 13:21:23 2018 -0700
> summary:???? 8205494: Convert or remove all AWT applet demos
>
> Latest entry for make/CompileToolsHotspot.gmk
> changeset:?? 50330:2cbc42a5764b
> user:??????? dlong
> date:??????? Thu May 31 10:38:05 2018 -0700
> summary:???? 8202670: Update Graal
>
> Latest entry for make/CopyInterimCLDRConverter.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/CreateBuildJdkCopy.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/CreateJmods.gmk
> changeset:?? 50142:f348e5d4769b
> user:??????? erikj
> date:??????? Fri May 11 08:39:21 2018 -0700
> summary:???? 8202914: Let custom makefile override jmod intput dir
> locations
>
> Latest entry for make/GenerateModuleSummary.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/GensrcModuleInfo.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/InterimImage.gmk
> changeset:?? 49207:2a25589b5971
> user:??????? redestad
> date:??????? Mon Mar 12 19:36:59 2018 +0100
> summary:???? 8199469: Disable generate-jli-classes when building
> interim-image
>
> Latest entry for make/ZipSource.gmk
> changeset:?? 50590:5fa19bad622d
> user:??????? erikj
> date:??????? Fri Jun 15 09:53:28 2018 -0700
> summary:???? 8204973: Add build support for filtering translations
>
> Latest entry for make/autoconf/boot-jdk.m4
> changeset:?? 51822:f3c1945fa8aa
> user:??????? ihse
> date:??????? Thu Sep 20 18:39:53 2018 +0200
> summary:???? 8210960: Allow --with-boot-jdk-jvmargs to work during
> configure
>
> Latest entry for make/autoconf/build-aux/config.guess
> changeset:?? 50311:04c8eba70a59
> user:??????? erikj
> date:??????? Wed May 30 09:45:24 2018 -0700
> summary:???? 8204091: Configure broken on MIPS when uname returns
> mipsel or mips64el
>
> Latest entry for make/autoconf/jdk-version.m4
> changeset:?? 52724:0bdbf854472f
> user:??????? rriggs
> date:??????? Wed Nov 28 15:53:49 2018 -0500
> summary:???? 4947890: Minimize JNI upcalls in system-properties
> initialization
>
> Latest entry for make/autoconf/lib-bundled.m4
> changeset:?? 48758:ba19a21d727d
> user:??????? erikj
> date:??????? Wed Feb 07 09:48:43 2018 -0800
> summary:???? 8196951: jdk build fails with clang: error: no such file
> or directory: '@LIBZ_CFLAGS@'
>
> Latest entry for make/autoconf/toolchain_windows.m4
> changeset:?? 50639:c12c79a49ca2
> user:??????? erikj
> date:??????? Tue Jun 19 16:44:41 2018 +0200
> summary:???? 8205183: Warning about using VS2017 should be removed
>
> Latest entry for make/common/JarArchive.gmk
> changeset:?? 52595:16609197022c
> user:??????? redestad
> date:??????? Fri Nov 16 23:39:51 2018 +0100
> summary:???? 8061281: Microbenchmark suite build support, directory
> layout and sample benchmarks
>
> Latest entry for make/common/JavaCompilation.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/common/TextFileProcessing.gmk
> changeset:?? 48943:e61816fc5276
> user:??????? erikj
> date:??????? Fri Feb 23 22:09:16 2018 +0100
> summary:???? 8198569: SetupTextFileProcessing should use sed with 'g'
>
> Latest entry for make/common/ZipArchive.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/copy/Copy-java.desktop.gmk
> changeset:?? 49537:149dc554808c
> user:??????? erikj
> date:??????? Thu Apr 05 23:46:05 2018 +0200
> summary:???? 8199539: Provide a standard way for the build to filter
> un-needed legal .md files
>
> Latest entry for make/copy/CopyCommon.gmk
> changeset:?? 49540:9704789737c1
> user:??????? erikj
> date:??????? Fri Apr 06 02:52:24 2018 +0200
> summary:???? 8201222: JDK-8199539 broke the OpenJDK build
>
> Latest entry for make/data/fontconfig/macosx.fontconfig.properties
> changeset:?? 50348:008f416a79cb
> user:??????? prr
> date:??????? Fri May 25 16:23:17 2018 -0700
> summary:???? 8191522: Remove Bigelow&Holmes Lucida fonts from JDK sources
>
> Latest entry for make/data/fontconfig/solaris.fontconfig.properties
> changeset:?? 50348:008f416a79cb
> user:??????? prr
> date:??????? Fri May 25 16:23:17 2018 -0700
> summary:???? 8191522: Remove Bigelow&Holmes Lucida fonts from JDK sources
>
> Latest entry for make/data/fontconfig/windows.fontconfig.properties
> changeset:?? 50836:b9456394d24f
> user:??????? pkbalakr
> date:??????? Mon Jun 25 16:01:01 2018 +0530
> summary:???? 8202696: Remove exclusion range for phonetic chars in
> windows fontconfig.properties
>
> Latest entry for make/devkit/createMacosxDevkit6.sh
> changeset:?? 48755:fe377d6591ef
> user:??????? erikj
> date:??????? Tue Feb 06 16:33:38 2018 -0800
> summary:???? 8196895: Create devkit for Macosx with Xcode 9.2
>
> Latest entry for make/devkit/createSolarisDevkit12.4.sh
> changeset:?? 48919:c7e84c0a51c3
> user:??????? erikj
> date:??????? Tue Feb 20 07:51:51 2018 -0800
> summary:???? 8198328: Create devkit for Solaris with developer studio
> 12.6 and Solaris11.3
>
> Latest entry for make/devkit/createWindowsDevkit2013.sh
> changeset:?? 48678:bcce1fa183e7
> user:??????? erikj
> date:??????? Mon Jan 29 17:58:12 2018 +0100
> summary:???? 8196108: Add build support for VS 2015/2017
>
> Latest entry for make/gendata/GendataFontConfig.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/gendata/GendataHtml32dtd.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/gendata/GendataTZDB.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/gensrc/Gensrc-jdk.localedata.gmk
> changeset:?? 50590:5fa19bad622d
> user:??????? erikj
> date:??????? Fri Jun 15 09:53:28 2018 -0700
> summary:???? 8204973: Add build support for filtering translations
>
> Latest entry for make/gensrc/GensrcCharsetCoder.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/gensrc/GensrcCommonLangtools.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/gensrc/GensrcLocaleData.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/gensrc/GensrcMisc.gmk
> changeset:?? 52724:0bdbf854472f
> user:??????? rriggs
> date:??????? Wed Nov 28 15:53:49 2018 -0500
> summary:???? 4947890: Minimize JNI upcalls in system-properties
> initialization
>
> Latest entry for make/gensrc/GensrcModuleLoaderMap.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/gensrc/GensrcSwing.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/gensrc/GensrcVarHandles.gmk
> changeset:?? 52220:9c260a6b6471
> user:??????? mchung
> date:??????? Mon Oct 22 17:00:04 2018 -0700
> summary:???? 8207146: Rename jdk.internal.misc.Unsafe::xxxObject to
> xxxReference
>
> Latest entry for make/hotspot/gensrc/GenerateSources.gmk
> changeset:?? 50113:caf115bb98ad
> user:??????? egahlin
> date:??????? Tue May 15 20:24:34 2018 +0200
> summary:???? 8199712: Flight Recorder
>
> Latest entry for
> make/hotspot/src/classes/build/tools/projectcreator/BuildConfig.java
> changeset:?? 50113:caf115bb98ad
> user:??????? egahlin
> date:??????? Tue May 15 20:24:34 2018 +0200
> summary:???? 8199712: Flight Recorder
>
> Latest entry for
> make/jdk/src/classes/build/tools/classlist/HelloClasslist.java
> changeset:?? 52177:430e6421d503
> user:??????? redestad
> date:??????? Wed Oct 17 17:35:26 2018 +0200
> summary:???? 8212597: Optimize String concatenation setup when using
> primitive operands
>
> Latest entry for
> make/jdk/src/classes/build/tools/module/GenModuleInfoSource.java
> changeset:?? 51499:fdd768b9865e
> user:??????? mchung
> date:??????? Wed Aug 22 13:47:47 2018 -0500
> summary:???? 8167314: Enable the check to detect duplicate provides in
> in GenModuleInfoSource
>
> Latest entry for
> make/jdk/src/classes/build/tools/module/ModuleInfoExtraTest.java
> changeset:?? 51499:fdd768b9865e
> user:??????? mchung
> date:??????? Wed Aug 22 13:47:47 2018 -0500
> summary:???? 8167314: Enable the check to detect duplicate provides in
> in GenModuleInfoSource
>
> Latest entry for make/langtools/build.xml
> changeset:?? 51565:7e5f08c619e3
> user:??????? mcimadamore
> date:??????? Wed Aug 29 11:25:51 2018 +0100
> summary:???? 8209064: Make intellij support more robust after changes
> for 2018.2
>
> Latest entry for
> make/langtools/intellij/template/src/idea/LangtoolsIdeaAntLogger.java
> changeset:?? 51565:7e5f08c619e3
> user:??????? mcimadamore
> date:??????? Wed Aug 29 11:25:51 2018 +0100
> summary:???? 8209064: Make intellij support more robust after changes
> for 2018.2
>
> Latest entry for
> make/langtools/tools/propertiesparser/PropertiesParser.java
> changeset:?? 51737:30e6a0b9d691
> user:??????? ihse
> date:??????? Fri Sep 14 09:16:51 2018 +0200
> summary:???? 8210731: PropertiesParser does not produce reproducible
> output
>
> Latest entry for
> make/langtools/tools/propertiesparser/gen/ClassGenerator.java
> changeset:?? 51985:08c296fe9458
> user:??????? cushon
> date:??????? Mon Oct 01 21:14:58 2018 -0700
> summary:???? 8211057: Gensrc step CompileProperties generates unstable
> CompilerProperties output
>
> Latest entry for make/launcher/Launcher-jdk.aot.gmk
> changeset:?? 50104:4ea7917929b9
> user:??????? aph
> date:??????? Mon May 14 12:03:59 2018 +0100
> summary:???? 8185505: AArch64: Port AOT to AArch64
>
> Latest entry for make/nashorn/build.xml
> changeset:?? 52783:5827f12ecbf0
> user:??????? hannesw
> date:??????? Fri Nov 30 15:43:37 2018 +0100
> summary:???? 8214525: Bit rot in Nashorn Ant script
>
> Latest entry for make/rmic/Rmic-java.management.rmi.gmk
> changeset:?? 52065:dea8a62cdfc3
> user:??????? erikj
> date:??????? Tue Oct 09 14:57:23 2018 -0700
> summary:???? 8211724: Change mkdir -p to MakeDir macro where possible
>
> Latest entry for make/scripts/compare_exceptions.sh.incl
> changeset:?? 51781:dd737bf6abde
> user:??????? ihse
> date:??????? Tue Sep 18 10:35:42 2018 +0200
> summary:???? 8210750: Clean up compare.sh exceptions
>
> /Magnus
>
From erik.joelsson at oracle.com Mon Dec 3 17:34:02 2018
From: erik.joelsson at oracle.com (Erik Joelsson)
Date: Mon, 3 Dec 2018 09:34:02 -0800
Subject: RFR: JDK-8214710 Fix hg log in update_copyright_year.sh
In-Reply-To: <390c437b-2886-5e19-cd79-ebfaa16aa851@oracle.com>
References: <390c437b-2886-5e19-cd79-ebfaa16aa851@oracle.com>
Message-ID: <9ee9968c-b3cf-b4c3-9502-88ac48c0c4c0@oracle.com>
Looks good.
/Erik
On 2018-12-03 06:19, Magnus Ihse Bursie wrote:
> The commands for hg log is missing -l1, which will limit the log to
> just the revision specified. Instead, all revisions from repo creation
> will now be included, and the script fails to work.
>
> I will publish a separate changeset with missed copyright year updates
> in the build system.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8214710
> WebRev:
> http://cr.openjdk.java.net/~ihse/JDK-8214710-fix-update-copyright-year/webrev.01
>
> /Magnus
From erik.joelsson at oracle.com Mon Dec 3 17:36:48 2018
From: erik.joelsson at oracle.com (Erik Joelsson)
Date: Mon, 3 Dec 2018 09:36:48 -0800
Subject: RFR: JDK-8214311 dtrace gensrc has missing dependencies
In-Reply-To: <5C055DA1.1070503@oracle.com>
References: <0d6a5a5c-2772-62d5-da6b-707eee59253f@oracle.com>
<5C055DA1.1070503@oracle.com>
Message-ID: <2d1abc77-ca41-2286-ab2e-d85f53932101@oracle.com>
Looks good.
/Erik
On 2018-12-03 08:45, Tim Bell wrote:
> Magnus:
>
>> Building with JOBS=1 on solaris discovered that the dtrace gensrc has
>> not all dependencies properly declared. This has not been discovered
>> until now, since Solaris machines is typically very parallel, and the
>> needed prerequisites has just happened to have been generated before.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8214311
>> WebRev:
>> http://cr.openjdk.java.net/~ihse/JDK-8214311-fix-dtrace-gensrc-dependencies/webrev.01
>>
>
> Looks good.
>
> Tim
>
>
From tim.bell at oracle.com Mon Dec 3 17:37:33 2018
From: tim.bell at oracle.com (Tim Bell)
Date: Mon, 03 Dec 2018 09:37:33 -0800
Subject: RFR: JDK-8214718 Update missing copyright year in build system
In-Reply-To: <5245aa37-ffa2-d8be-f396-6b1eafd3a96d@oracle.com>
References: <6b0b9aea-517a-a857-ded3-33c00633e1fc@oracle.com>
<5245aa37-ffa2-d8be-f396-6b1eafd3a96d@oracle.com>
Message-ID: <5C0569DD.9070401@oracle.com>
Magnus:
Looks good to me as well.
Tim
On 12/03/18 09:35, Erik Joelsson wrote:
> Looks good.
>
> /Erik
>
> On 2018-12-03 08:30, Magnus Ihse Bursie wrote:
>> Not all changes in 2018 in the build system were accompanied by
>> updates of the copyright year. Add 2018 to files that were actually
>> modified in 2018, but did not get the copyright line updated.
>>
>> I have found this list by running the update_copyright_year script,
>> and then manually verified that the files were indeed modified in
>> 2018, and was not a "dummy" change (such as modifying the copyright
>> header...). Files with "dummy" changes were reverted. I have also
>> manually verified that the script did indeed rewrite the header
>> correctly. (I do not trust scripts... The only good script is a dead
>> scr... nah. But I do not trust them.)
>>
>> As usual, the easiest way to review a change like this is to look at
>> the patch file in webrev.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8214718
>> WebRev:
>> http://cr.openjdk.java.net/~ihse/JDK-8214718-update-missing-copyright-year-2018/webrev.01
From magnus.ihse.bursie at oracle.com Mon Dec 3 17:38:29 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Mon, 3 Dec 2018 18:38:29 +0100
Subject: RFR: JDK-8213187 Handle libwindowsaccessbridge need to access MSVCRT
functions
Message-ID:
From the bug report:
As a follow-up to JDK-8210944, find the best way to handle the needs of
libwindowsaccessbridge to access the MSVCRT functions. Options include
reverting JDK-8210944, and copying the MSVCRT*.DLL when needed, and/or
possible other solutions.
I chose to revert JDK-8210944. I originally did JDK-8210944 to be able
to finish a larger patch that moved all "CFLAGS := $(CFLAGS_JDKLIB)"
constructs into SetupJdkLibrary, and then the filter-out logic
completely screwed that up. But this patch has been lingering and
bit-rotting while I've spent my time elsewhere, and it will not make it
into JDK 12. I'll have to reconsider how I do that patch (possibly
forcing that patch to include not only moving CFLAGS_JDKLIB into
SetupJdkLibrary, but splitting up CFLAGS_JDKLIB in parts as well.
However, without this revert, we'll see a regression in JDK 12 on the
loading of accessability libraries on Windows.
Bug: https://bugs.openjdk.java.net/browse/JDK-8213187
Patch inline:
diff --git a/make/lib/Lib-jdk.accessibility.gmk
b/make/lib/Lib-jdk.accessibility.gmk
--- a/make/lib/Lib-jdk.accessibility.gmk
+++ b/make/lib/Lib-jdk.accessibility.gmk
@@ -41,7 +41,7 @@
???????? EXTRA_SRC := common, \
???????? OPTIMIZATION := LOW, \
???????? DISABLED_WARNINGS_microsoft := 4311 4302 4312, \
-??????? CFLAGS := $(CFLAGS_JDKLIB) \
+??????? CFLAGS :=? $(filter-out -MD, $(CFLAGS_JDKLIB)) -MT \
???????????? -DACCESSBRIDGE_ARCH_$2, \
???????? EXTRA_HEADER_DIRS := \
???????????? include/bridge \
/Magnus
From magnus.ihse.bursie at oracle.com Mon Dec 3 17:42:19 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Mon, 3 Dec 2018 18:42:19 +0100
Subject: RFR: JDK-8214720 Add pandoc filter to improve html man page output
Message-ID:
The html output of man pages looks weird due to the metadata header
required by pandoc to generate proper man pages. We should add a pandoc
filter for html output as well.
The actual javascript filter implementation was graciously provided to
me by Jon.
Bug: https://bugs.openjdk.java.net/browse/JDK-8214720
WebRev:
http://cr.openjdk.java.net/~ihse/JDK-8214720-pandoc-filter-for-html-manpages/webrev.01
/Magnus
From erik.joelsson at oracle.com Mon Dec 3 17:44:35 2018
From: erik.joelsson at oracle.com (Erik Joelsson)
Date: Mon, 3 Dec 2018 09:44:35 -0800
Subject: RFR: JDK-8213187 Handle libwindowsaccessbridge need to access
MSVCRT functions
In-Reply-To:
References:
Message-ID:
Looks good.
/Erik
On 2018-12-03 09:38, Magnus Ihse Bursie wrote:
> From the bug report:
>
> As a follow-up to JDK-8210944, find the best way to handle the needs
> of libwindowsaccessbridge to access the MSVCRT functions. Options
> include reverting JDK-8210944, and copying the MSVCRT*.DLL when
> needed, and/or possible other solutions.
>
> I chose to revert JDK-8210944. I originally did JDK-8210944 to be able
> to finish a larger patch that moved all "CFLAGS := $(CFLAGS_JDKLIB)"
> constructs into SetupJdkLibrary, and then the filter-out logic
> completely screwed that up. But this patch has been lingering and
> bit-rotting while I've spent my time elsewhere, and it will not make
> it into JDK 12. I'll have to reconsider how I do that patch (possibly
> forcing that patch to include not only moving CFLAGS_JDKLIB into
> SetupJdkLibrary, but splitting up CFLAGS_JDKLIB in parts as well.
>
> However, without this revert, we'll see a regression in JDK 12 on the
> loading of accessability libraries on Windows.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8213187
> Patch inline:
> diff --git a/make/lib/Lib-jdk.accessibility.gmk
> b/make/lib/Lib-jdk.accessibility.gmk
> --- a/make/lib/Lib-jdk.accessibility.gmk
> +++ b/make/lib/Lib-jdk.accessibility.gmk
> @@ -41,7 +41,7 @@
> ???????? EXTRA_SRC := common, \
> ???????? OPTIMIZATION := LOW, \
> ???????? DISABLED_WARNINGS_microsoft := 4311 4302 4312, \
> -??????? CFLAGS := $(CFLAGS_JDKLIB) \
> +??????? CFLAGS :=? $(filter-out -MD, $(CFLAGS_JDKLIB)) -MT \
> ???????????? -DACCESSBRIDGE_ARCH_$2, \
> ???????? EXTRA_HEADER_DIRS := \
> ???????????? include/bridge \
>
> /Magnus
>
From rkennke at redhat.com Mon Dec 3 19:27:04 2018
From: rkennke at redhat.com (Roman Kennke)
Date: Mon, 3 Dec 2018 20:27:04 +0100
Subject: RFR (round 4), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To: <02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
Message-ID:
Round 5 of Shenandoah review includes:
- A fix for the @requires tag in TestFullGCCountTest.java. It should be
correct now. We believe the CMS @requires was also not quite right and
fixed it the same.
It reads now: Don't run this test if:
- Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
true, as set by harness
- Actual GC set by harness is Shenandoah *and*
ExplicitGCInvokesConcurrent is not set false by harness (it's true by
default in Shenandoah, so this needs to be double-inverteed).
The @requires for CMS was wrong before (we think), because it would also
filter defaultGC + ExplicitGCInvokesConcurrent.
- Sorting of macros was fixed, as was pointed out by Per
- Some stuff was added to SA, as suggested by Jini
- Rebased on most current jdk/jdk code
Webrevs:
http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
I also need reviews from GC reviewers for the CSR:
https://bugs.openjdk.java.net/browse/JDK-8214349
I already got reviews for:
[x] shared-runtime (coleenp)
[x] shared-compiler (kvn)
I got reviews for shared-build, but an earlier version, so maybe makes
sense to look over this again. Erik J, Magnus?
I still need approvals for:
[ ] shared-build (kvn, erikj, ihse, pliden)
[ ] shared-gc (pliden, kbarrett)
[ ] shared-serviceability (jgeorge, pliden)
[ ] shared-tests (lmesnik, pliden)
[ ] shenandoah-gc
[ ] shenandoah-tests
Thanks for your patience and ongoing support!
Cheers,
Roman
> Hi all,
>
> here comes round 4 of Shenandoah upstreaming review:
>
> This includes fixes for the issues that Per brought up:
> - Verify and gracefully reject dangerous flags combinations that
> disables required barriers
> - Revisited @requires filters in tests
> - Trim unused code from Shenandoah's SA impl
> - Move ShenandoahGCTracer to gc/shenandoah
> - Fix ordering of GC names in various files
> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>
> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>
> Thanks everybody for taking time to review this!
> Roman
>
>> Hello all,
>>
>> Thanks so far for all the reviews and support!
>>
>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>
>> Things we've changed today:
>> - We moved shenandoah-specific code out of .ad files into our own .ad
>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>> requires an addition in build machinery though, see
>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>> - Improved zero-disabling and build-code-simplification as suggested by
>> Magnus and Per
>> - Cleaned up some leftovers in C2
>> - Improved C2 loop opts code by introducing another APIs in
>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards now.
>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>> that.
>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>> - Rebased on jdk-12+22
>>
>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>
>> Thanks,
>> Roman
>>
>>> Alright, we fixed:
>>> - The minor issues that Kim reported in shared-gc
>>> - A lot of fixes in shared-tests according to Leonid's review
>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>
>>> Some notes:
>>> Leonid: test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>> correct. The @requires there means to exclude runs with both CMS and
>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>> made the condition a bit clearer by avoiding triple-negation.
>>>
>>> See:
>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>
>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>
>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>> those with ZGC?
>>>
>>> See:
>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>
>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>> next round).
>>>
>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>> better. I can tell that we're not done with C2 yet. Can you look over
>>> the code and see what is ok, and especially what is not ok, so that we
>>> can focus our efforts on the relevant parts?
>>>
>>> Updated set of webrevs:
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>
>>> Thanks,
>>> Roman
>>>
>>>
>>>> Hi,
>>>>
>>>> This is the first round of changes for including Shenandoah GC into
>>>> mainline.
>>>> I divided the review into parts that roughly correspond to the mailing lists
>>>> that would normally review it, and I divided it into 'shared' code
>>>> changes and
>>>> 'shenandoah' code changes (actually, mostly additions). The intend is to
>>>> eventually
>>>> push them as single 'combined' changeset, once reviewed.
>>>>
>>>> JEP:
>>>> ? https://openjdk.java.net/jeps/189
>>>> Bug entry:
>>>>
>>>> ?https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>
>>>> Webrevs:
>>>> ? http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>
>>>> For those who want to see the full change, have a look at the
>>>> shenandoah-complete
>>>>
>>>> directory,
>>>> it contains the full combined webrev. Alternatively, there is the file
>>>> shenandoah-master.patch
>>>> ,
>>>> which is what I intend to commit (and which should be equivalent to the
>>>> 'shenandoah-complete' webrev).
>>>>
>>>> Sections to review (at this point) are the following:
>>>> ?*) shenandoah-gc
>>>>
>>>> ??? - Actual Shenandoah implementation, almost completely residing in
>>>> gc/shenandoah
>>>>
>>>> ?*) shared-gc
>>>>
>>>> ??? - This is mostly boilerplate that is common to any GC
>>>> ??? - referenceProcessor.cpp has a little change to make one assert not
>>>> fail (next to CMS and G1)
>>>> ??? - taskqueue.hpp has some small adjustments to enable subclassing
>>>>
>>>> ?*) shared-serviceability
>>>>
>>>> ??? - The usual code to support another GC
>>>>
>>>> ?*) shared-runtime
>>>>
>>>> ??? - A number of friends declarations to allow Shenandoah iterators to
>>>> hook up with,
>>>> ????? e.g. ClassLoaderData, CodeCache, etc
>>>> ??? - Warning and disabling JFR LeakProfiler
>>>> ??? - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>> Shenandoah C2 optimizations
>>>> ??? - Locks initialization in mutexLocker.cpp as usual
>>>> ??? - VM operations defines for Shenandoah's VM ops
>>>> ??? - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>> Shenandoah's logging
>>>> ??? - The usual macros in macro.hpp
>>>>
>>>> ?*) shared-build
>>>>
>>>> ??? - Add shenandoah feature, enabled by default, as agreed with
>>>> Vladimir K. beforehand
>>>> ??? - Some flags for shenandoah-enabled compilation to get
>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>> ????? and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>> Shenandoah's barriers
>>>> ??? - --param inline-unit-growth=1000 settings for 2 shenandoah source
>>>> files, which is
>>>> ????? useful to get the whole marking loop inlined (observed significant
>>>> regression if we
>>>> ????? don't)
>>>>
>>>> ?*) shared-tests
>>>>
>>>> ??? - Test infrastructure to support Shenandoah
>>>> ??? - Shenandoah test groups
>>>> ??? - Exclude Shenandoah in various tests that can be run with selected GC
>>>> ??? - Enable/add configure for Shenandoah for tests that make sense to
>>>> run with it
>>>>
>>>> ?*) shenandoah-tests
>>>>
>>>> ??? - Shenandoah specific tests, most reside in gc/shenandoah subdirectory
>>>> ??? - A couple of tests configurations have been added, e.g.
>>>> TestGCBasherWithShenandoah.java
>>>>
>>>> I intentionally left out shared-compiler for now, because we have some
>>>> work left to do
>>>> there, but if you click around you'll find the patch anyway, in case you
>>>> want to take
>>>> a peek at it.
>>>>
>>>> We have regular builds on:
>>>> ? - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>> ? - {Windows} x {x86_64},
>>>> ? - {MacOS X} x {x86_64}
>>>>
>>>> This also routinely passes:
>>>> ? - the new Shenandoah tests
>>>> ? - jcstress with/without aggressive Shenandoah verification
>>>> ? - specjvm2008 with/without aggressive Shenandoah verification
>>>>
>>>>
>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she deserves
>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>> teams for tirelessly helping with and reviewing all the GC interface and
>>>> related changes, and of course the many early adopters for reporting
>>>> bugs and success stories and feature requests: we wouldn't be here
>>>> without any of you!
>>>>
>>>> Best regards,
>>>> Roman
>>>>
>>>
>>
>
From Sergey.Bylokhov at oracle.com Mon Dec 3 19:37:14 2018
From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov)
Date: Mon, 3 Dec 2018 11:37:14 -0800
Subject: [12] Review Request: 8212680 (JDK12b14/Solaris-sparc)
SplashScreen::getSplashScreen call fails with ULE: "libsplashscreen.so:
ld.so.1: java: fatal: libz.so.1: open failed: No such file or directory"
In-Reply-To:
References: <9a22393a-08e7-7686-26a6-fd893631d073@oracle.com>
<5BFF6A1A.6030504@oracle.com>
<5C0084CF.5080207@oracle.com>
<5C00AE7E.2050307@oracle.com>
Message-ID: <51325e38-361f-5140-b175-917db16ad3b3@oracle.com>
Hi, Magnus.
> This looks good to me too, but as I said before, I still think you should write a note about this change in UPDATING.txt, so this fix is not lost if pnglibconf.h were to be re-generated.
All lines which started by "/*#undef " in the "pnglibconf.h" are commented manually
and this is an existed note in the UPDATING.txt:
=========
4) Special and careful handling of pnglibconf.h
OpenJDK has a heavily modified copy of pnglibconf.h.
This is the trickiest part of the whole exercise.
This file is generated by png at build time.
Except for the dates and version, you should generally not need to update
OpenJDK's copy unless the new version of PNG has added rquired new #defines
that cause problems building.
You can run configure && make on the downloaded source and compare but we
do not want to enable any of the WRITE support, and there are many more
modifications as well.
So do NOT just copy in a file from the new libpng.
So lots of reasons to not copy over the new version,
and instead just tweak the existing one.
=========
--
Best regards, Sergey.
From magnus.ihse.bursie at oracle.com Mon Dec 3 20:29:38 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Mon, 3 Dec 2018 21:29:38 +0100
Subject: [12] Review Request: 8212680 (JDK12b14/Solaris-sparc)
SplashScreen::getSplashScreen call fails with ULE: "libsplashscreen.so:
ld.so.1: java: fatal: libz.so.1: open failed: No such file or directory"
In-Reply-To: <51325e38-361f-5140-b175-917db16ad3b3@oracle.com>
References: <9a22393a-08e7-7686-26a6-fd893631d073@oracle.com>
<5BFF6A1A.6030504@oracle.com>
<5C0084CF.5080207@oracle.com>
<5C00AE7E.2050307@oracle.com>
<51325e38-361f-5140-b175-917db16ad3b3@oracle.com>
Message-ID: <06FE7679-16FC-4646-B0C9-D5CC97B154AF@oracle.com>
Fair enough, that warning is enough. You don't need to add anything else. I'm ok with the patch.
/Magnus
> 3 dec. 2018 kl. 20:37 skrev Sergey Bylokhov :
>
> Hi, Magnus.
>
>> This looks good to me too, but as I said before, I still think you should write a note about this change in UPDATING.txt, so this fix is not lost if pnglibconf.h were to be re-generated.
> All lines which started by "/*#undef " in the "pnglibconf.h" are commented manually
> and this is an existed note in the UPDATING.txt:
> =========
> 4) Special and careful handling of pnglibconf.h
> OpenJDK has a heavily modified copy of pnglibconf.h.
> This is the trickiest part of the whole exercise.
> This file is generated by png at build time.
> Except for the dates and version, you should generally not need to update
> OpenJDK's copy unless the new version of PNG has added rquired new #defines
> that cause problems building.
> You can run configure && make on the downloaded source and compare but we
> do not want to enable any of the WRITE support, and there are many more
> modifications as well.
> So do NOT just copy in a file from the new libpng.
> So lots of reasons to not copy over the new version,
> and instead just tweak the existing one.
> =========
>
> --
> Best regards, Sergey.
From Roger.Riggs at oracle.com Mon Dec 3 20:50:56 2018
From: Roger.Riggs at oracle.com (Roger Riggs)
Date: Mon, 3 Dec 2018 15:50:56 -0500
Subject: RFR: 8212794 IBM-964 is required for AIX default charset
In-Reply-To: <235f5bb2-cd60-56bf-3539-cdee07febd53@oracle.com>
References: <6e0506fa72311261d3b5923dd58cdb3c@linux.vnet.ibm.com>
<07f980b6bd352a9eff8f2d0d161f3f19@linux.vnet.ibm.com>
<74984761-7152-6026-42a5-fc60a6298a4b@oracle.com>
<260a71c0-31f8-7127-8627-b383ddd73b5b@oracle.com>
<6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
<510056368323d6e1d8b502722c7a325f@linux.vnet.ibm.com>
<235f5bb2-cd60-56bf-3539-cdee07febd53@oracle.com>
Message-ID: <643fe481-310f-d2a3-2156-8ada724e6d30@oracle.com>
Hi Ichiroh,
src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
??? I think this is no longer needed since it only has imports.
??? By the way, the style is to import each specific class and avoid
wild card imports.
TestIBMBugs:
? - Please use a style consistent with other methods in the class.
??? In this case spaces are needed around "{" and "}, and a space after
"," comma.
? - The new method bug8212794, includes a test for x-IBM33722.
??? Is that needed since there does not appear to be a change for 33722?
Regards, Roger
On 11/30/2018 09:58 AM, Magnus Ihse Bursie wrote:
>
>
> On 2018-11-30 10:49, Ichiroh Takiguchi wrote:
>> Hello.
>>
>> Could you review the fix again ?
>>
>> Bug:??? https://bugs.openjdk.java.net/browse/JDK-8212794
>> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.02/
> I think it looks good but please let someone from core-libs review it
> too.
>
> /Magnus
>>
>> I just fixed only IBM964 for JDK-8212794.
>> (IBM29626C fix is not included)
>>
>> On non AIX platform (Linux),
>> ibm-euctw alias is added for IBM964.
>>
>> Without fix
>> $ jshell
>> |? Welcome to JShell -- Version 12-ea
>> |? For an introduction type: /help intro
>>
>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>> cs ==> x-IBM964
>>
>> jshell> cs.getClass().getName()
>> $2 ==> "sun.nio.cs.ext.IBM964"
>>
>> jshell> System.out.println(String.join("\n", cs.aliases()))
>> ibm-964
>> cp964
>> ibm964
>> 964
>>
>> jshell> /exit
>> |? Goodbye
>> $
>> ======
>>
>> With fix
>> ======
>> $ jshell
>> |? Welcome to JShell -- Version 12-internal
>> |? For an introduction type: /help intro
>>
>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>> cs ==> x-IBM964
>>
>> jshell> cs.getClass().getName()
>> $2 ==> "sun.nio.cs.ext.IBM964"
>>
>> jshell> System.out.println(String.join("\n", cs.aliases()))
>> ibm-964
>> cp964
>> ibm-euctw
>> ibm964
>> 964
>>
>> jshell> /exit
>> |? Goodbye
>> $
>> ======
>>
>> On AIX platform
>> IBM964 is moved to java.base module from jdk.charset module.
>>
>> ======
>> $ LANG=zh_TW jshell
>> |? Welcome to JShell -- Version 12-internal
>> |? For an introduction type: /help intro
>>
>> jshell> var cs = java.nio.charset.Charset.defaultCharset()
>> cs ==> x-IBM964
>>
>> jshell> cs.getClass().getName()
>> $2 ==> "sun.nio.cs.IBM964"
>>
>> jshell> System.out.println(String.join("\n", cs.aliases()))
>> ibm-964
>> cp964
>> ibm-euctw
>> ibm964
>> 964
>>
>> jshell> /exit
>> |? Goodbye
>> $
>> ======
>>
>> I'd like to obtain a sponsor for this issue.
>>
>> Thanks,
>> Ichiroh Takiguchi
>> IBM Japan, Ltd.
>>
>> On 2018-11-29 22:39, Ichiroh Takiguchi wrote:
>>> Hello Alan & Magnus.
>>>
>>> Sorry for you confusion.
>>> I did many copy actions and rename actions.
>>> So you may see, I added unexpected code into non AIX platform.
>>>
>>> I think I should not put 2 kind of modification.
>>>
>>> For this bug id, I'll handle IBM964 and IBM33722.
>>> (also SimpleEUCEncoder.java is required)
>>>
>>> I'll submit code review again.
>>>
>>> Additionally, I'll touch
>>> make/data/charsetmapping/charsets
>>> make/data/charsetmapping/stdcs-aix
>>>
>>> I'll not touch
>>> make/jdk/src/classes/build/tools/charsetmapping/Main.java
>>> make/jdk/src/classes/build/tools/charsetmapping/SRC.java
>>>
>>> My build machine is not so fast, after test is done.
>>> I'll post new code.
>>>
>>> Thanks,
>>> Ichiroh Takiguchi
>>>
>>> On 2018-11-28 19:10, Magnus Ihse Bursie wrote:
>>>> On 2018-11-28 10:36, Alan Bateman wrote:
>>>>> On 28/11/2018 09:28, Magnus Ihse Bursie wrote:
>>>>>> I'm quite unsatisfied with the current handling of character sets
>>>>>> in the build in general. :-( I'd really like to modernize it. I
>>>>>> have a, slightly fuzzy, laundry list of things I want to fix from
>>>>>> a build perspective, but I'm not sure of what "external"
>>>>>> requirements are coming from AIX and the general core-libs agenda
>>>>>> regarding character sets in general.
>>>>>>
>>>>>> I think there is a good opportunity to solve many problems at the
>>>>>> same time here, as long as everyone agrees on what is the
>>>>>> preferred outcome.
>>>>> The support in the build to configure the charsets to include in
>>>>> java.base on each platform has been working well. Charsets that
>>>>> aren't in java.base go into the jdk.charsets service provider
>>>>> module and that has been working well too. From the result point
>>>>> of view, perhaps, but definitely not from the build perspective.
>>>>> ;-) But yes, I understand this is functionality that should be kept.
>>>>> One thing that we lack is some way to add charsets for specific
>>>>> platforms and this comes up with the IBM patches where they are
>>>>> looking to adding several additional IBM charsets. One starting
>>>>> point that we've touched on in several threads here is dropping
>>>>> the EBCDIC charsets from the main stream builds. Going there will
>>>>> need build support.
>>>> So build support for trivially adding specific charsets to specific
>>>> platforms? Both to java.base (for AIX) and jdk.charsets, I presume,
>>>> then?
>>>>
>>>> Can you expand on the issue of dropping ebcdic? What's the problem
>>>> that needs build support?
>>>>
>>>> /Magnus
>>>>>
>>>>>
>>>>> -Alan
>>
>
From takiguc at linux.vnet.ibm.com Tue Dec 4 03:30:04 2018
From: takiguc at linux.vnet.ibm.com (Ichiroh Takiguchi)
Date: Tue, 04 Dec 2018 12:30:04 +0900
Subject: RFR: 8212794 IBM-964 is required for AIX default charset
In-Reply-To: <643fe481-310f-d2a3-2156-8ada724e6d30@oracle.com>
References: <6e0506fa72311261d3b5923dd58cdb3c@linux.vnet.ibm.com>
<07f980b6bd352a9eff8f2d0d161f3f19@linux.vnet.ibm.com>
<74984761-7152-6026-42a5-fc60a6298a4b@oracle.com>
<260a71c0-31f8-7127-8627-b383ddd73b5b@oracle.com>
<6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
<510056368323d6e1d8b502722c7a325f@linux.vnet.ibm.com>
<235f5bb2-cd60-56bf-3539-cdee07febd53@oracle.com>
<643fe481-310f-d2a3-2156-8ada724e6d30@oracle.com>
Message-ID: <62845d4ddbbfd04433808577bb1b1c7e@linux.vnet.ibm.com>
Hello Roger.
Thank you for your suggestion.
> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>
> I think this is no longer needed since it only has imports.
> By the way, the style is to import each specific class and
> avoid wild card imports.
"import sun.nio.cs.*;" is required because of
SimpleEUCEncoder.java.template.
SimpleEUCEncoder.java.template has conversion loop and IBM964 refers it.
It means that,
* On AIX platform, SimpleEUCEncoder should be in sun.nio.cs package
* On non-AIX platform, SimpleEUCEncoder should be in sun.nio.cs.ext
package
I could not determine which package has SimpleEUCEncoder.
And same kind code is available on ISO2022_JP.java.
Please let me know if you know another way.
> TestIBMBugs:
> - Please use a style consistent with other methods in the class.
> In this case spaces are needed around "{" and "}, and a space
> after "," comma.
I'll changed.
> - The new method bug8212794, includes a test for x-IBM33722.
> Is that needed since there does not appear to be a change for
> 33722?
Yes, it's no need.
Could you review the fix again ?
Bug: https://bugs.openjdk.java.net/browse/JDK-8212794
Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.03/
Thanks,
Ichiroh Takiguchi
On 2018-12-04 05:50, Roger Riggs wrote:
> Hi Ichiroh,
>
> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>
> ??? I think this is no longer needed since it only has imports.
> ??? By the way, the style is to import each specific class and
> avoid wild card imports.
>
> TestIBMBugs:
> ? - Please use a style consistent with other methods in the class.
> ??? In this case spaces are needed around "{" and "}, and a space
> after "," comma.
>
> ? - The new method bug8212794, includes a test for x-IBM33722.
> ??? Is that needed since there does not appear to be a change for
> 33722?
>
> Regards, Roger
>
>
> On 11/30/2018 09:58 AM, Magnus Ihse Bursie wrote:
>>
>>
>> On 2018-11-30 10:49, Ichiroh Takiguchi wrote:
>>> Hello.
>>>
>>> Could you review the fix again ?
>>>
>>> Bug:??? https://bugs.openjdk.java.net/browse/JDK-8212794
>>> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.02/
>> I think it looks good but please let someone from core-libs review it
>> too.
>>
>> /Magnus
>>>
>>> I just fixed only IBM964 for JDK-8212794.
>>> (IBM29626C fix is not included)
>>>
>>> On non AIX platform (Linux),
>>> ibm-euctw alias is added for IBM964.
>>>
>>> Without fix
>>> $ jshell
>>> |? Welcome to JShell -- Version 12-ea
>>> |? For an introduction type: /help intro
>>>
>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>> cs ==> x-IBM964
>>>
>>> jshell> cs.getClass().getName()
>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>
>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>> ibm-964
>>> cp964
>>> ibm964
>>> 964
>>>
>>> jshell> /exit
>>> |? Goodbye
>>> $
>>> ======
>>>
>>> With fix
>>> ======
>>> $ jshell
>>> |? Welcome to JShell -- Version 12-internal
>>> |? For an introduction type: /help intro
>>>
>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>> cs ==> x-IBM964
>>>
>>> jshell> cs.getClass().getName()
>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>
>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>> ibm-964
>>> cp964
>>> ibm-euctw
>>> ibm964
>>> 964
>>>
>>> jshell> /exit
>>> |? Goodbye
>>> $
>>> ======
>>>
>>> On AIX platform
>>> IBM964 is moved to java.base module from jdk.charset module.
>>>
>>> ======
>>> $ LANG=zh_TW jshell
>>> |? Welcome to JShell -- Version 12-internal
>>> |? For an introduction type: /help intro
>>>
>>> jshell> var cs = java.nio.charset.Charset.defaultCharset()
>>> cs ==> x-IBM964
>>>
>>> jshell> cs.getClass().getName()
>>> $2 ==> "sun.nio.cs.IBM964"
>>>
>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>> ibm-964
>>> cp964
>>> ibm-euctw
>>> ibm964
>>> 964
>>>
>>> jshell> /exit
>>> |? Goodbye
>>> $
>>> ======
>>>
>>> I'd like to obtain a sponsor for this issue.
>>>
>>> Thanks,
>>> Ichiroh Takiguchi
>>> IBM Japan, Ltd.
>>>
>>> On 2018-11-29 22:39, Ichiroh Takiguchi wrote:
>>>> Hello Alan & Magnus.
>>>>
>>>> Sorry for you confusion.
>>>> I did many copy actions and rename actions.
>>>> So you may see, I added unexpected code into non AIX platform.
>>>>
>>>> I think I should not put 2 kind of modification.
>>>>
>>>> For this bug id, I'll handle IBM964 and IBM33722.
>>>> (also SimpleEUCEncoder.java is required)
>>>>
>>>> I'll submit code review again.
>>>>
>>>> Additionally, I'll touch
>>>> make/data/charsetmapping/charsets
>>>> make/data/charsetmapping/stdcs-aix
>>>>
>>>> I'll not touch
>>>> make/jdk/src/classes/build/tools/charsetmapping/Main.java
>>>> make/jdk/src/classes/build/tools/charsetmapping/SRC.java
>>>>
>>>> My build machine is not so fast, after test is done.
>>>> I'll post new code.
>>>>
>>>> Thanks,
>>>> Ichiroh Takiguchi
>>>>
>>>> On 2018-11-28 19:10, Magnus Ihse Bursie wrote:
>>>>> On 2018-11-28 10:36, Alan Bateman wrote:
>>>>>> On 28/11/2018 09:28, Magnus Ihse Bursie wrote:
>>>>>>> I'm quite unsatisfied with the current handling of character sets
>>>>>>> in the build in general. :-( I'd really like to modernize it. I
>>>>>>> have a, slightly fuzzy, laundry list of things I want to fix from
>>>>>>> a build perspective, but I'm not sure of what "external"
>>>>>>> requirements are coming from AIX and the general core-libs agenda
>>>>>>> regarding character sets in general.
>>>>>>>
>>>>>>> I think there is a good opportunity to solve many problems at the
>>>>>>> same time here, as long as everyone agrees on what is the
>>>>>>> preferred outcome.
>>>>>> The support in the build to configure the charsets to include in
>>>>>> java.base on each platform has been working well. Charsets that
>>>>>> aren't in java.base go into the jdk.charsets service provider
>>>>>> module and that has been working well too. From the result point
>>>>>> of view, perhaps, but definitely not from the build perspective.
>>>>>> ;-) But yes, I understand this is functionality that should be
>>>>>> kept.
>>>>>> One thing that we lack is some way to add charsets for specific
>>>>>> platforms and this comes up with the IBM patches where they are
>>>>>> looking to adding several additional IBM charsets. One starting
>>>>>> point that we've touched on in several threads here is dropping
>>>>>> the EBCDIC charsets from the main stream builds. Going there will
>>>>>> need build support.
>>>>> So build support for trivially adding specific charsets to specific
>>>>> platforms? Both to java.base (for AIX) and jdk.charsets, I presume,
>>>>> then?
>>>>>
>>>>> Can you expand on the issue of dropping ebcdic? What's the problem
>>>>> that needs build support?
>>>>>
>>>>> /Magnus
>>>>>>
>>>>>>
>>>>>> -Alan
>>>
>>
From rkennke at redhat.com Tue Dec 4 07:10:28 2018
From: rkennke at redhat.com (Roman Kennke)
Date: Tue, 4 Dec 2018 08:10:28 +0100
Subject: RFR (round 5), JDK-8214259: Implementation: JEP 189: Shenandoah: A
Low-Pause Garbage Collector
In-Reply-To: <02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
Message-ID: <8c267450-9ca8-79a6-0e4a-39b3b68af2e3@redhat.com>
Round 5 of Shenandoah review includes:
- A fix for the @requires tag in TestFullGCCountTest.java. It should be
correct now. We believe the CMS @requires was also not quite right and
fixed it the same.
It reads now: Don't run this test if:
- Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
true, as set by harness
- Actual GC set by harness is Shenandoah *and*
ExplicitGCInvokesConcurrent is not set false by harness (it's true by
default in Shenandoah, so this needs to be double-inverteed).
The @requires for CMS was wrong before (we think), because it would also
filter defaultGC + ExplicitGCInvokesConcurrent.
- Sorting of macros was fixed, as was pointed out by Per
- Some stuff was added to SA, as suggested by Jini
- Rebased on most current jdk/jdk code
Webrevs:
http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
I also need reviews from GC reviewers for the CSR:
https://bugs.openjdk.java.net/browse/JDK-8214349
I already got reviews for:
[x] shared-runtime (coleenp)
[x] shared-compiler (kvn)
I got reviews for shared-build, but an earlier version, so maybe makes
sense to look over this again. Erik J, Magnus?
I still need approvals for:
[ ] shared-build (kvn, erikj, ihse, pliden)
[ ] shared-gc (pliden, kbarrett)
[ ] shared-serviceability (jgeorge, pliden)
[ ] shared-tests (lmesnik, pliden)
[ ] shenandoah-gc
[ ] shenandoah-tests
Thanks for your patience and ongoing support!
Cheers,
Roman
> Hi all,
>
> here comes round 4 of Shenandoah upstreaming review:
>
> This includes fixes for the issues that Per brought up:
> - Verify and gracefully reject dangerous flags combinations that
> disables required barriers
> - Revisited @requires filters in tests
> - Trim unused code from Shenandoah's SA impl
> - Move ShenandoahGCTracer to gc/shenandoah
> - Fix ordering of GC names in various files
> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>
> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>
> Thanks everybody for taking time to review this!
> Roman
>
>> Hello all,
>>
>> Thanks so far for all the reviews and support!
>>
>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>
>> Things we've changed today:
>> - We moved shenandoah-specific code out of .ad files into our own .ad
>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>> requires an addition in build machinery though, see
>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>> - Improved zero-disabling and build-code-simplification as suggested by
>> Magnus and Per
>> - Cleaned up some leftovers in C2
>> - Improved C2 loop opts code by introducing another APIs in
>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards now.
>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>> that.
>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>> - Rebased on jdk-12+22
>>
>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>
>> Thanks,
>> Roman
>>
>>> Alright, we fixed:
>>> - The minor issues that Kim reported in shared-gc
>>> - A lot of fixes in shared-tests according to Leonid's review
>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>
>>> Some notes:
>>> Leonid: test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>> correct. The @requires there means to exclude runs with both CMS and
>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>> made the condition a bit clearer by avoiding triple-negation.
>>>
>>> See:
>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>
>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>
>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>> those with ZGC?
>>>
>>> See:
>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>
>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>> next round).
>>>
>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>> better. I can tell that we're not done with C2 yet. Can you look over
>>> the code and see what is ok, and especially what is not ok, so that we
>>> can focus our efforts on the relevant parts?
>>>
>>> Updated set of webrevs:
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>
>>> Thanks,
>>> Roman
>>>
>>>
>>>> Hi,
>>>>
>>>> This is the first round of changes for including Shenandoah GC into
>>>> mainline.
>>>> I divided the review into parts that roughly correspond to the mailing lists
>>>> that would normally review it, and I divided it into 'shared' code
>>>> changes and
>>>> 'shenandoah' code changes (actually, mostly additions). The intend is to
>>>> eventually
>>>> push them as single 'combined' changeset, once reviewed.
>>>>
>>>> JEP:
>>>> ? https://openjdk.java.net/jeps/189
>>>> Bug entry:
>>>>
>>>> ?https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>
>>>> Webrevs:
>>>> ? http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>
>>>> For those who want to see the full change, have a look at the
>>>> shenandoah-complete
>>>>
>>>> directory,
>>>> it contains the full combined webrev. Alternatively, there is the file
>>>> shenandoah-master.patch
>>>> ,
>>>> which is what I intend to commit (and which should be equivalent to the
>>>> 'shenandoah-complete' webrev).
>>>>
>>>> Sections to review (at this point) are the following:
>>>> ?*) shenandoah-gc
>>>>
>>>> ??? - Actual Shenandoah implementation, almost completely residing in
>>>> gc/shenandoah
>>>>
>>>> ?*) shared-gc
>>>>
>>>> ??? - This is mostly boilerplate that is common to any GC
>>>> ??? - referenceProcessor.cpp has a little change to make one assert not
>>>> fail (next to CMS and G1)
>>>> ??? - taskqueue.hpp has some small adjustments to enable subclassing
>>>>
>>>> ?*) shared-serviceability
>>>>
>>>> ??? - The usual code to support another GC
>>>>
>>>> ?*) shared-runtime
>>>>
>>>> ??? - A number of friends declarations to allow Shenandoah iterators to
>>>> hook up with,
>>>> ????? e.g. ClassLoaderData, CodeCache, etc
>>>> ??? - Warning and disabling JFR LeakProfiler
>>>> ??? - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>> Shenandoah C2 optimizations
>>>> ??? - Locks initialization in mutexLocker.cpp as usual
>>>> ??? - VM operations defines for Shenandoah's VM ops
>>>> ??? - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>> Shenandoah's logging
>>>> ??? - The usual macros in macro.hpp
>>>>
>>>> ?*) shared-build
>>>>
>>>> ??? - Add shenandoah feature, enabled by default, as agreed with
>>>> Vladimir K. beforehand
>>>> ??? - Some flags for shenandoah-enabled compilation to get
>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>> ????? and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>> Shenandoah's barriers
>>>> ??? - --param inline-unit-growth=1000 settings for 2 shenandoah source
>>>> files, which is
>>>> ????? useful to get the whole marking loop inlined (observed significant
>>>> regression if we
>>>> ????? don't)
>>>>
>>>> ?*) shared-tests
>>>>
>>>> ??? - Test infrastructure to support Shenandoah
>>>> ??? - Shenandoah test groups
>>>> ??? - Exclude Shenandoah in various tests that can be run with selected GC
>>>> ??? - Enable/add configure for Shenandoah for tests that make sense to
>>>> run with it
>>>>
>>>> ?*) shenandoah-tests
>>>>
>>>> ??? - Shenandoah specific tests, most reside in gc/shenandoah subdirectory
>>>> ??? - A couple of tests configurations have been added, e.g.
>>>> TestGCBasherWithShenandoah.java
>>>>
>>>> I intentionally left out shared-compiler for now, because we have some
>>>> work left to do
>>>> there, but if you click around you'll find the patch anyway, in case you
>>>> want to take
>>>> a peek at it.
>>>>
>>>> We have regular builds on:
>>>> ? - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>> ? - {Windows} x {x86_64},
>>>> ? - {MacOS X} x {x86_64}
>>>>
>>>> This also routinely passes:
>>>> ? - the new Shenandoah tests
>>>> ? - jcstress with/without aggressive Shenandoah verification
>>>> ? - specjvm2008 with/without aggressive Shenandoah verification
>>>>
>>>>
>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she deserves
>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>> teams for tirelessly helping with and reviewing all the GC interface and
>>>> related changes, and of course the many early adopters for reporting
>>>> bugs and success stories and feature requests: we wouldn't be here
>>>> without any of you!
>>>>
>>>> Best regards,
>>>> Roman
>>>>
>>>
>>
>
From magnus.ihse.bursie at oracle.com Tue Dec 4 07:14:25 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Tue, 4 Dec 2018 08:14:25 +0100
Subject: RFR (round 4),
JDK-8214259: Implementation: JEP 189: Shenandoah: A Low-Pause Garbage
Collector
In-Reply-To:
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
Message-ID:
> 3 dec. 2018 kl. 20:27 skrev Roman Kennke :
>
> Round 5 of Shenandoah review includes:
> - A fix for the @requires tag in TestFullGCCountTest.java. It should be
> correct now. We believe the CMS @requires was also not quite right and
> fixed it the same.
>
> It reads now: Don't run this test if:
> - Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
> true, as set by harness
> - Actual GC set by harness is Shenandoah *and*
> ExplicitGCInvokesConcurrent is not set false by harness (it's true by
> default in Shenandoah, so this needs to be double-inverteed).
>
> The @requires for CMS was wrong before (we think), because it would also
> filter defaultGC + ExplicitGCInvokesConcurrent.
>
> - Sorting of macros was fixed, as was pointed out by Per
> - Some stuff was added to SA, as suggested by Jini
> - Rebased on most current jdk/jdk code
>
> Webrevs:
> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
>
> I also need reviews from GC reviewers for the CSR:
> https://bugs.openjdk.java.net/browse/JDK-8214349
>
> I already got reviews for:
> [x] shared-runtime (coleenp)
> [x] shared-compiler (kvn)
>
> I got reviews for shared-build, but an earlier version, so maybe makes
> sense to look over this again. Erik J, Magnus?
Build changes look good.
/Magnus
>
> I still need approvals for:
> [ ] shared-build (kvn, erikj, ihse, pliden)
> [ ] shared-gc (pliden, kbarrett)
> [ ] shared-serviceability (jgeorge, pliden)
> [ ] shared-tests (lmesnik, pliden)
> [ ] shenandoah-gc
> [ ] shenandoah-tests
>
>
> Thanks for your patience and ongoing support!
>
> Cheers,
> Roman
>
>> Hi all,
>>
>> here comes round 4 of Shenandoah upstreaming review:
>>
>> This includes fixes for the issues that Per brought up:
>> - Verify and gracefully reject dangerous flags combinations that
>> disables required barriers
>> - Revisited @requires filters in tests
>> - Trim unused code from Shenandoah's SA impl
>> - Move ShenandoahGCTracer to gc/shenandoah
>> - Fix ordering of GC names in various files
>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>>
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>
>> Thanks everybody for taking time to review this!
>> Roman
>>
>>> Hello all,
>>>
>>> Thanks so far for all the reviews and support!
>>>
>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>>
>>> Things we've changed today:
>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>> requires an addition in build machinery though, see
>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>> - Improved zero-disabling and build-code-simplification as suggested by
>>> Magnus and Per
>>> - Cleaned up some leftovers in C2
>>> - Improved C2 loop opts code by introducing another APIs in
>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards now.
>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>>> that.
>>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>>> - Rebased on jdk-12+22
>>>
>>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>>
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>
>>> Thanks,
>>> Roman
>>>
>>>> Alright, we fixed:
>>>> - The minor issues that Kim reported in shared-gc
>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>
>>>> Some notes:
>>>> Leonid: test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>> correct. The @requires there means to exclude runs with both CMS and
>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>
>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>
>>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>>> those with ZGC?
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>
>>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>>> next round).
>>>>
>>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>>> better. I can tell that we're not done with C2 yet. Can you look over
>>>> the code and see what is ok, and especially what is not ok, so that we
>>>> can focus our efforts on the relevant parts?
>>>>
>>>> Updated set of webrevs:
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>
>>>> Thanks,
>>>> Roman
>>>>
>>>>
>>>>> Hi,
>>>>>
>>>>> This is the first round of changes for including Shenandoah GC into
>>>>> mainline.
>>>>> I divided the review into parts that roughly correspond to the mailing lists
>>>>> that would normally review it, and I divided it into 'shared' code
>>>>> changes and
>>>>> 'shenandoah' code changes (actually, mostly additions). The intend is to
>>>>> eventually
>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>
>>>>> JEP:
>>>>> https://openjdk.java.net/jeps/189
>>>>> Bug entry:
>>>>>
>>>>> https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>
>>>>> Webrevs:
>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>
>>>>> For those who want to see the full change, have a look at the
>>>>> shenandoah-complete
>>>>>
>>>>> directory,
>>>>> it contains the full combined webrev. Alternatively, there is the file
>>>>> shenandoah-master.patch
>>>>> ,
>>>>> which is what I intend to commit (and which should be equivalent to the
>>>>> 'shenandoah-complete' webrev).
>>>>>
>>>>> Sections to review (at this point) are the following:
>>>>> *) shenandoah-gc
>>>>>
>>>>> - Actual Shenandoah implementation, almost completely residing in
>>>>> gc/shenandoah
>>>>>
>>>>> *) shared-gc
>>>>>
>>>>> - This is mostly boilerplate that is common to any GC
>>>>> - referenceProcessor.cpp has a little change to make one assert not
>>>>> fail (next to CMS and G1)
>>>>> - taskqueue.hpp has some small adjustments to enable subclassing
>>>>>
>>>>> *) shared-serviceability
>>>>>
>>>>> - The usual code to support another GC
>>>>>
>>>>> *) shared-runtime
>>>>>
>>>>> - A number of friends declarations to allow Shenandoah iterators to
>>>>> hook up with,
>>>>> e.g. ClassLoaderData, CodeCache, etc
>>>>> - Warning and disabling JFR LeakProfiler
>>>>> - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>> Shenandoah C2 optimizations
>>>>> - Locks initialization in mutexLocker.cpp as usual
>>>>> - VM operations defines for Shenandoah's VM ops
>>>>> - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>> Shenandoah's logging
>>>>> - The usual macros in macro.hpp
>>>>>
>>>>> *) shared-build
>>>>>
>>>>> - Add shenandoah feature, enabled by default, as agreed with
>>>>> Vladimir K. beforehand
>>>>> - Some flags for shenandoah-enabled compilation to get
>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>> and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>> Shenandoah's barriers
>>>>> - --param inline-unit-growth=1000 settings for 2 shenandoah source
>>>>> files, which is
>>>>> useful to get the whole marking loop inlined (observed significant
>>>>> regression if we
>>>>> don't)
>>>>>
>>>>> *) shared-tests
>>>>>
>>>>> - Test infrastructure to support Shenandoah
>>>>> - Shenandoah test groups
>>>>> - Exclude Shenandoah in various tests that can be run with selected GC
>>>>> - Enable/add configure for Shenandoah for tests that make sense to
>>>>> run with it
>>>>>
>>>>> *) shenandoah-tests
>>>>>
>>>>> - Shenandoah specific tests, most reside in gc/shenandoah subdirectory
>>>>> - A couple of tests configurations have been added, e.g.
>>>>> TestGCBasherWithShenandoah.java
>>>>>
>>>>> I intentionally left out shared-compiler for now, because we have some
>>>>> work left to do
>>>>> there, but if you click around you'll find the patch anyway, in case you
>>>>> want to take
>>>>> a peek at it.
>>>>>
>>>>> We have regular builds on:
>>>>> - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>> - {Windows} x {x86_64},
>>>>> - {MacOS X} x {x86_64}
>>>>>
>>>>> This also routinely passes:
>>>>> - the new Shenandoah tests
>>>>> - jcstress with/without aggressive Shenandoah verification
>>>>> - specjvm2008 with/without aggressive Shenandoah verification
>>>>>
>>>>>
>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she deserves
>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>>> teams for tirelessly helping with and reviewing all the GC interface and
>>>>> related changes, and of course the many early adopters for reporting
>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>> without any of you!
>>>>>
>>>>> Best regards,
>>>>> Roman
>
From jini.george at oracle.com Tue Dec 4 07:23:55 2018
From: jini.george at oracle.com (Jini George)
Date: Tue, 4 Dec 2018 12:53:55 +0530
Subject: RFR (round 4), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To:
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
Message-ID:
Hi Roman,
Thank you for making the changes. The SA portion looks good to me. One
nit though:
In
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java,
in printGCAlgorithm(), does displaying the nbr of Parallel GC threads
not make sense for Shenandoah (like it is for G1, ZGC, etc)?
Thank you,
Jini.
On 12/4/2018 12:57 AM, Roman Kennke wrote:
> Round 5 of Shenandoah review includes:
> - A fix for the @requires tag in TestFullGCCountTest.java. It should be
> correct now. We believe the CMS @requires was also not quite right and
> fixed it the same.
>
> It reads now: Don't run this test if:
> - Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
> true, as set by harness
> - Actual GC set by harness is Shenandoah *and*
> ExplicitGCInvokesConcurrent is not set false by harness (it's true by
> default in Shenandoah, so this needs to be double-inverteed).
>
> The @requires for CMS was wrong before (we think), because it would also
> filter defaultGC + ExplicitGCInvokesConcurrent.
>
> - Sorting of macros was fixed, as was pointed out by Per
> - Some stuff was added to SA, as suggested by Jini
> - Rebased on most current jdk/jdk code
>
> Webrevs:
> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
>
> I also need reviews from GC reviewers for the CSR:
> https://bugs.openjdk.java.net/browse/JDK-8214349
>
> I already got reviews for:
> [x] shared-runtime (coleenp)
> [x] shared-compiler (kvn)
>
> I got reviews for shared-build, but an earlier version, so maybe makes
> sense to look over this again. Erik J, Magnus?
>
> I still need approvals for:
> [ ] shared-build (kvn, erikj, ihse, pliden)
> [ ] shared-gc (pliden, kbarrett)
> [ ] shared-serviceability (jgeorge, pliden)
> [ ] shared-tests (lmesnik, pliden)
> [ ] shenandoah-gc
> [ ] shenandoah-tests
>
>
> Thanks for your patience and ongoing support!
>
> Cheers,
> Roman
>
>> Hi all,
>>
>> here comes round 4 of Shenandoah upstreaming review:
>>
>> This includes fixes for the issues that Per brought up:
>> - Verify and gracefully reject dangerous flags combinations that
>> disables required barriers
>> - Revisited @requires filters in tests
>> - Trim unused code from Shenandoah's SA impl
>> - Move ShenandoahGCTracer to gc/shenandoah
>> - Fix ordering of GC names in various files
>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>>
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>
>> Thanks everybody for taking time to review this!
>> Roman
>>
>>> Hello all,
>>>
>>> Thanks so far for all the reviews and support!
>>>
>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>>
>>> Things we've changed today:
>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>> requires an addition in build machinery though, see
>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>> - Improved zero-disabling and build-code-simplification as suggested by
>>> Magnus and Per
>>> - Cleaned up some leftovers in C2
>>> - Improved C2 loop opts code by introducing another APIs in
>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards now.
>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>>> that.
>>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>>> - Rebased on jdk-12+22
>>>
>>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>>
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>
>>> Thanks,
>>> Roman
>>>
>>>> Alright, we fixed:
>>>> - The minor issues that Kim reported in shared-gc
>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>
>>>> Some notes:
>>>> Leonid: test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>> correct. The @requires there means to exclude runs with both CMS and
>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>
>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>
>>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>>> those with ZGC?
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>
>>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>>> next round).
>>>>
>>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>>> better. I can tell that we're not done with C2 yet. Can you look over
>>>> the code and see what is ok, and especially what is not ok, so that we
>>>> can focus our efforts on the relevant parts?
>>>>
>>>> Updated set of webrevs:
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>
>>>> Thanks,
>>>> Roman
>>>>
>>>>
>>>>> Hi,
>>>>>
>>>>> This is the first round of changes for including Shenandoah GC into
>>>>> mainline.
>>>>> I divided the review into parts that roughly correspond to the mailing lists
>>>>> that would normally review it, and I divided it into 'shared' code
>>>>> changes and
>>>>> 'shenandoah' code changes (actually, mostly additions). The intend is to
>>>>> eventually
>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>
>>>>> JEP:
>>>>> ? https://openjdk.java.net/jeps/189
>>>>> Bug entry:
>>>>>
>>>>> ?https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>
>>>>> Webrevs:
>>>>> ? http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>
>>>>> For those who want to see the full change, have a look at the
>>>>> shenandoah-complete
>>>>>
>>>>> directory,
>>>>> it contains the full combined webrev. Alternatively, there is the file
>>>>> shenandoah-master.patch
>>>>> ,
>>>>> which is what I intend to commit (and which should be equivalent to the
>>>>> 'shenandoah-complete' webrev).
>>>>>
>>>>> Sections to review (at this point) are the following:
>>>>> ?*) shenandoah-gc
>>>>>
>>>>> ??? - Actual Shenandoah implementation, almost completely residing in
>>>>> gc/shenandoah
>>>>>
>>>>> ?*) shared-gc
>>>>>
>>>>> ??? - This is mostly boilerplate that is common to any GC
>>>>> ??? - referenceProcessor.cpp has a little change to make one assert not
>>>>> fail (next to CMS and G1)
>>>>> ??? - taskqueue.hpp has some small adjustments to enable subclassing
>>>>>
>>>>> ?*) shared-serviceability
>>>>>
>>>>> ??? - The usual code to support another GC
>>>>>
>>>>> ?*) shared-runtime
>>>>>
>>>>> ??? - A number of friends declarations to allow Shenandoah iterators to
>>>>> hook up with,
>>>>> ????? e.g. ClassLoaderData, CodeCache, etc
>>>>> ??? - Warning and disabling JFR LeakProfiler
>>>>> ??? - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>> Shenandoah C2 optimizations
>>>>> ??? - Locks initialization in mutexLocker.cpp as usual
>>>>> ??? - VM operations defines for Shenandoah's VM ops
>>>>> ??? - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>> Shenandoah's logging
>>>>> ??? - The usual macros in macro.hpp
>>>>>
>>>>> ?*) shared-build
>>>>>
>>>>> ??? - Add shenandoah feature, enabled by default, as agreed with
>>>>> Vladimir K. beforehand
>>>>> ??? - Some flags for shenandoah-enabled compilation to get
>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>> ????? and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>> Shenandoah's barriers
>>>>> ??? - --param inline-unit-growth=1000 settings for 2 shenandoah source
>>>>> files, which is
>>>>> ????? useful to get the whole marking loop inlined (observed significant
>>>>> regression if we
>>>>> ????? don't)
>>>>>
>>>>> ?*) shared-tests
>>>>>
>>>>> ??? - Test infrastructure to support Shenandoah
>>>>> ??? - Shenandoah test groups
>>>>> ??? - Exclude Shenandoah in various tests that can be run with selected GC
>>>>> ??? - Enable/add configure for Shenandoah for tests that make sense to
>>>>> run with it
>>>>>
>>>>> ?*) shenandoah-tests
>>>>>
>>>>> ??? - Shenandoah specific tests, most reside in gc/shenandoah subdirectory
>>>>> ??? - A couple of tests configurations have been added, e.g.
>>>>> TestGCBasherWithShenandoah.java
>>>>>
>>>>> I intentionally left out shared-compiler for now, because we have some
>>>>> work left to do
>>>>> there, but if you click around you'll find the patch anyway, in case you
>>>>> want to take
>>>>> a peek at it.
>>>>>
>>>>> We have regular builds on:
>>>>> ? - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>> ? - {Windows} x {x86_64},
>>>>> ? - {MacOS X} x {x86_64}
>>>>>
>>>>> This also routinely passes:
>>>>> ? - the new Shenandoah tests
>>>>> ? - jcstress with/without aggressive Shenandoah verification
>>>>> ? - specjvm2008 with/without aggressive Shenandoah verification
>>>>>
>>>>>
>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she deserves
>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>>> teams for tirelessly helping with and reviewing all the GC interface and
>>>>> related changes, and of course the many early adopters for reporting
>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>> without any of you!
>>>>>
>>>>> Best regards,
>>>>> Roman
>>>>>
>>>>
>>>
>>
>
From rkennke at redhat.com Tue Dec 4 08:00:55 2018
From: rkennke at redhat.com (Roman Kennke)
Date: Tue, 4 Dec 2018 09:00:55 +0100
Subject: RFR (round 4), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To:
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
Message-ID: <56886a20-3543-3006-8d11-164786a1e596@redhat.com>
Hi Jini,
> Thank you for making the changes. The SA portion looks good to me.
Thank you!
> One
> nit though:
>
> In
> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java,
> in printGCAlgorithm(), does displaying the nbr of Parallel GC threads
> not make sense for Shenandoah (like it is for G1, ZGC, etc)?
I suppose it does. I will add it.
Thanks,
Roman
> Thank you,
> Jini.
>
>
> On 12/4/2018 12:57 AM, Roman Kennke wrote:
>> Round 5 of Shenandoah review includes:
>> - A fix for the @requires tag in TestFullGCCountTest.java. It should be
>> correct now. We believe the CMS @requires was also not quite right and
>> fixed it the same.
>>
>> It reads now: Don't run this test if:
>> ? - Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
>> true, as set by harness
>> ? - Actual GC set by harness is Shenandoah *and*
>> ExplicitGCInvokesConcurrent is not set false by harness (it's true by
>> default in Shenandoah, so this needs to be double-inverteed).
>>
>> The @requires for CMS was wrong before (we think), because it would also
>> filter defaultGC + ExplicitGCInvokesConcurrent.
>>
>> - Sorting of macros was fixed, as was pointed out by Per
>> - Some stuff was added to SA, as suggested by Jini
>> - Rebased on most current jdk/jdk code
>>
>> Webrevs:
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
>>
>> I also need reviews from GC reviewers for the CSR:
>> https://bugs.openjdk.java.net/browse/JDK-8214349
>>
>> I already got reviews for:
>> [x] shared-runtime (coleenp)
>> [x] shared-compiler (kvn)
>>
>> I got reviews for shared-build, but an earlier version, so maybe makes
>> sense to look over this again. Erik J, Magnus?
>>
>> I still need approvals for:
>> [ ] shared-build????????? (kvn, erikj, ihse, pliden)
>> [ ] shared-gc???????????? (pliden, kbarrett)
>> [ ] shared-serviceability (jgeorge, pliden)
>> [ ] shared-tests????????? (lmesnik, pliden)
>> [ ] shenandoah-gc
>> [ ] shenandoah-tests
>>
>>
>> Thanks for your patience and ongoing support!
>>
>> Cheers,
>> Roman
>>
>>> Hi all,
>>>
>>> here comes round 4 of Shenandoah upstreaming review:
>>>
>>> This includes fixes for the issues that Per brought up:
>>> - Verify and gracefully reject dangerous flags combinations that
>>> disables required barriers
>>> - Revisited @requires filters in tests
>>> - Trim unused code from Shenandoah's SA impl
>>> - Move ShenandoahGCTracer to gc/shenandoah
>>> - Fix ordering of GC names in various files
>>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>>>
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>>
>>> Thanks everybody for taking time to review this!
>>> Roman
>>>
>>>> Hello all,
>>>>
>>>> Thanks so far for all the reviews and support!
>>>>
>>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>>> Also, I fixed the numbering of my webrevs to match the review-round.
>>>> ;-)
>>>>
>>>> Things we've changed today:
>>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>>> requires an addition in build machinery though, see
>>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>>> - Improved zero-disabling and build-code-simplification as suggested by
>>>> Magnus and Per
>>>> - Cleaned up some leftovers in C2
>>>> - Improved C2 loop opts code by introducing another APIs in
>>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC
>>>> guards now.
>>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>>>> that.
>>>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>>>> - Rebased on jdk-12+22
>>>>
>>>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>>>
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>>
>>>> Thanks,
>>>> Roman
>>>>
>>>>> Alright, we fixed:
>>>>> - The minor issues that Kim reported in shared-gc
>>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>>
>>>>> Some notes:
>>>>> Leonid:? test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>>> correct. The @requires there means to exclude runs with both CMS and
>>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>>>> fine. Adding the same clause for Shenandoah means the same, and
>>>>> filters
>>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>>
>>>>> See:
>>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>>
>>>>>
>>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>>
>>>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>>>> those with ZGC?
>>>>>
>>>>> See:
>>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>>
>>>>>
>>>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>>>> next round).
>>>>>
>>>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>>>> better. I can tell that we're not done with C2 yet. Can you look over
>>>>> the code and see what is ok, and especially what is not ok, so that we
>>>>> can focus our efforts on the relevant parts?
>>>>>
>>>>> Updated set of webrevs:
>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>>
>>>>> Thanks,
>>>>> Roman
>>>>>
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> This is the first round of changes for including Shenandoah GC into
>>>>>> mainline.
>>>>>> I divided the review into parts that roughly correspond to the
>>>>>> mailing lists
>>>>>> that would normally review it, and I divided it into 'shared' code
>>>>>> changes and
>>>>>> 'shenandoah' code changes (actually, mostly additions). The intend
>>>>>> is to
>>>>>> eventually
>>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>>
>>>>>> JEP:
>>>>>> ?? https://openjdk.java.net/jeps/189
>>>>>> Bug entry:
>>>>>>
>>>>>> ??https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>>
>>>>>> Webrevs:
>>>>>> ?? http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>>
>>>>>> For those who want to see the full change, have a look at the
>>>>>> shenandoah-complete
>>>>>>
>>>>>>
>>>>>> directory,
>>>>>> it contains the full combined webrev. Alternatively, there is the
>>>>>> file
>>>>>> shenandoah-master.patch
>>>>>> ,
>>>>>>
>>>>>> which is what I intend to commit (and which should be equivalent
>>>>>> to the
>>>>>> 'shenandoah-complete' webrev).
>>>>>>
>>>>>> Sections to review (at this point) are the following:
>>>>>> ??*) shenandoah-gc
>>>>>>
>>>>>>
>>>>>> ???? - Actual Shenandoah implementation, almost completely
>>>>>> residing in
>>>>>> gc/shenandoah
>>>>>>
>>>>>> ??*) shared-gc
>>>>>>
>>>>>>
>>>>>> ???? - This is mostly boilerplate that is common to any GC
>>>>>> ???? - referenceProcessor.cpp has a little change to make one
>>>>>> assert not
>>>>>> fail (next to CMS and G1)
>>>>>> ???? - taskqueue.hpp has some small adjustments to enable subclassing
>>>>>>
>>>>>> ??*) shared-serviceability
>>>>>>
>>>>>>
>>>>>> ???? - The usual code to support another GC
>>>>>>
>>>>>> ??*) shared-runtime
>>>>>>
>>>>>>
>>>>>> ???? - A number of friends declarations to allow Shenandoah
>>>>>> iterators to
>>>>>> hook up with,
>>>>>> ?????? e.g. ClassLoaderData, CodeCache, etc
>>>>>> ???? - Warning and disabling JFR LeakProfiler
>>>>>> ???? - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>>> Shenandoah C2 optimizations
>>>>>> ???? - Locks initialization in mutexLocker.cpp as usual
>>>>>> ???? - VM operations defines for Shenandoah's VM ops
>>>>>> ???? - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>>> Shenandoah's logging
>>>>>> ???? - The usual macros in macro.hpp
>>>>>>
>>>>>> ??*) shared-build
>>>>>>
>>>>>>
>>>>>> ???? - Add shenandoah feature, enabled by default, as agreed with
>>>>>> Vladimir K. beforehand
>>>>>> ???? - Some flags for shenandoah-enabled compilation to get
>>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>>> ?????? and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>>> Shenandoah's barriers
>>>>>> ???? - --param inline-unit-growth=1000 settings for 2 shenandoah
>>>>>> source
>>>>>> files, which is
>>>>>> ?????? useful to get the whole marking loop inlined (observed
>>>>>> significant
>>>>>> regression if we
>>>>>> ?????? don't)
>>>>>>
>>>>>> ??*) shared-tests
>>>>>>
>>>>>>
>>>>>> ???? - Test infrastructure to support Shenandoah
>>>>>> ???? - Shenandoah test groups
>>>>>> ???? - Exclude Shenandoah in various tests that can be run with
>>>>>> selected GC
>>>>>> ???? - Enable/add configure for Shenandoah for tests that make
>>>>>> sense to
>>>>>> run with it
>>>>>>
>>>>>> ??*) shenandoah-tests
>>>>>>
>>>>>>
>>>>>> ???? - Shenandoah specific tests, most reside in gc/shenandoah
>>>>>> subdirectory
>>>>>> ???? - A couple of tests configurations have been added, e.g.
>>>>>> TestGCBasherWithShenandoah.java
>>>>>>
>>>>>> I intentionally left out shared-compiler for now, because we have
>>>>>> some
>>>>>> work left to do
>>>>>> there, but if you click around you'll find the patch anyway, in
>>>>>> case you
>>>>>> want to take
>>>>>> a peek at it.
>>>>>>
>>>>>> We have regular builds on:
>>>>>> ?? - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>>> ?? - {Windows} x {x86_64},
>>>>>> ?? - {MacOS X} x {x86_64}
>>>>>>
>>>>>> This also routinely passes:
>>>>>> ?? - the new Shenandoah tests
>>>>>> ?? - jcstress with/without aggressive Shenandoah verification
>>>>>> ?? - specjvm2008 with/without aggressive Shenandoah verification
>>>>>>
>>>>>>
>>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she
>>>>>> deserves
>>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>>>> teams for tirelessly helping with and reviewing all the GC
>>>>>> interface and
>>>>>> related changes, and of course the many early adopters for reporting
>>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>>> without any of you!
>>>>>>
>>>>>> Best regards,
>>>>>> Roman
>>>>>>
>>>>>
>>>>
>>>
>>
From rkennke at redhat.com Tue Dec 4 08:01:23 2018
From: rkennke at redhat.com (Roman Kennke)
Date: Tue, 4 Dec 2018 09:01:23 +0100
Subject: RFR (round 4), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To:
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
Message-ID:
Hi Magnus,
>> I got reviews for shared-build, but an earlier version, so maybe makes
>> sense to look over this again. Erik J, Magnus?
>
> Build changes look good.
Thanks, Magnus!
Roman
From volker.simonis at gmail.com Tue Dec 4 08:30:58 2018
From: volker.simonis at gmail.com (Volker Simonis)
Date: Tue, 4 Dec 2018 09:30:58 +0100
Subject: RFR(XS): 8214063: [AIX] Disable symbol visibility flags
In-Reply-To:
References:
<37b6d4e5-2065-2461-0aec-77941033d3ca@oracle.com>
Message-ID:
Hi Adam,
I've just pushed the change:
http://hg.openjdk.java.net/jdk/jdk/rev/fc54d27e58d8
Best regards,
Volker
On Thu, Nov 29, 2018 at 5:54 PM Adam Farley8 wrote:
>
> Hi All,
>
> The build passed on xlC 13.1 with the makefile patch I proposed (good catch on the comments Volkar!).
>
> With Volkar, Erik, Matthias, and Magnus all approving the change, it sounds like we're good to merge!
>
> Volkar, can you do the honours?
>
> Best Regards
>
> Adam Farley
> IBM Runtimes
>
> P.S. I approve the change too. ;)
>
>
> Volker Simonis wrote on 29/11/2018 11:54:33:
>
> > From: Volker Simonis
> > To: Magnus Ihse Bursie
> > Cc: build-dev , ppc-aix-port-
> > dev at openjdk.java.net, adam.farley at uk.ibm.com
> > Date: 29/11/2018 11:54
> > Subject: Re: RFR(XS): 8214063: [AIX] Disable symbol visibility flags
> >
> > On Thu, Nov 29, 2018 at 12:20 PM Magnus Ihse Bursie
> > wrote:
> > >
> > > On 2018-11-27 16:33, Volker Simonis wrote:
> > >
> > > > Hi,
> > > >
> > > > can I please have a review for the following trivial change which
> > > > simply disables the symbol visibility flags on AIX:
> > > >
> > > > https://urldefense.proofpoint.com/v2/url?
> > u=http-3A__cr.openjdk.java.net_-7Esimonis_webrevs_2018_8214063_&d=DwIBaQ&c=jf_iaSHvJObTbx-
> > siA1ZOg&r=P5m8KWUXJf-
> > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=6y4Npxy6aG4q8E9Xca--
> > YxF4UGVrVEIqu_wVvivFVUA&s=DptrWUUtJCcpUCbCWkkBOeFJCVk5im3hm9T_DcD0Jd8&e=
> > > > https://urldefense.proofpoint.com/v2/url?
> > u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8214063&d=DwIBaQ&c=jf_iaSHvJObTbx-
> > siA1ZOg&r=P5m8KWUXJf-
> > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=6y4Npxy6aG4q8E9Xca--
> > YxF4UGVrVEIqu_wVvivFVUA&s=jBFABkJb5E5W9K8pMX794-3gnpLfPyi3oASA1kizQ7A&e=
> > > Looks good to me. I am sorry for the mess I caused by optimisically
> > > trying to fix things on a platform I could not compile on... :(
> > >
> >
> > Thanks for the review and don't worry! We really appreciate your
> > continued help. It's really us who should have tested and spotted the
> > problems earlier :)
> >
> > Regards,
> > Volker
> >
> > > This also reminds me that the visibility flags *really* should move into
> > > configure/spec, not be sprinkled like this in the make files.
> > >
> > > /Magnus
> > > >
> > > > Change "8202322: AIX: symbol visibility flags not support on xlc 12.1"
> > > > [1] blindly introduced these flags for all xlC compiler versions >
> > > > 12.1 without ever testing it (which should not have happened). Now
> > > > that people are starting to really use xlC 13 it turns out that there
> > > > is more to do than just enabling the flags. This future work is
> > > > covered by "8204541: Correctly support AIX xlC 13.1 symbol visibility
> > > > flags".
> > > >
> > > > Thank you and best regards,
> > > > Volker
> > > >
> > > > [1] https://urldefense.proofpoint.com/v2/url?
> > u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8202322&d=DwIBaQ&c=jf_iaSHvJObTbx-
> > siA1ZOg&r=P5m8KWUXJf-
> > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=6y4Npxy6aG4q8E9Xca--
> > YxF4UGVrVEIqu_wVvivFVUA&s=pd7-rH7OPxeaq2g6S0dQPmb_3-8PLi8JZFKcP_Abp6Q&e=
> > > > [2] https://urldefense.proofpoint.com/v2/url?
> > u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8204541&d=DwIBaQ&c=jf_iaSHvJObTbx-
> > siA1ZOg&r=P5m8KWUXJf-
> > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=6y4Npxy6aG4q8E9Xca--
> > YxF4UGVrVEIqu_wVvivFVUA&s=q7KHUASpF-opdcLXbTTUT1bPoKrkTeaHTtd7c2jN4rc&e=
> > >
> >
>
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
From per.liden at oracle.com Tue Dec 4 09:35:26 2018
From: per.liden at oracle.com (Per Liden)
Date: Tue, 4 Dec 2018 10:35:26 +0100
Subject: RFR (round 4), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To:
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
Message-ID:
Hi Roman,
On 12/3/18 8:27 PM, Roman Kennke wrote:
> Round 5 of Shenandoah review includes:
> - A fix for the @requires tag in TestFullGCCountTest.java. It should be
> correct now. We believe the CMS @requires was also not quite right and
> fixed it the same.
>
> It reads now: Don't run this test if:
> - Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
> true, as set by harness
> - Actual GC set by harness is Shenandoah *and*
> ExplicitGCInvokesConcurrent is not set false by harness (it's true by
> default in Shenandoah, so this needs to be double-inverteed).
>
> The @requires for CMS was wrong before (we think), because it would also
> filter defaultGC + ExplicitGCInvokesConcurrent.
>
> - Sorting of macros was fixed, as was pointed out by Per
> - Some stuff was added to SA, as suggested by Jini
> - Rebased on most current jdk/jdk code
>
> Webrevs:
> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
>
> I also need reviews from GC reviewers for the CSR:
> https://bugs.openjdk.java.net/browse/JDK-8214349
>
> I already got reviews for:
> [x] shared-runtime (coleenp)
> [x] shared-compiler (kvn)
>
> I got reviews for shared-build, but an earlier version, so maybe makes
> sense to look over this again. Erik J, Magnus?
>
> I still need approvals for:
> [ ] shared-build (kvn, erikj, ihse, pliden)
> [ ] shared-gc (pliden, kbarrett)
> [ ] shared-serviceability (jgeorge, pliden)
> [ ] shared-tests (lmesnik, pliden)
The above parts look good to me. Reviewed.
Just one tiny nit (and I don't need to see a new webrev for this):
In src/hotspot/share/gc/shared/gcCause.cpp you have this:
+ case _shenandoah_allocation_failure_evac:
+ return "Allocation Failure During Evac";
+
+ case _shenandoah_stop_vm:
+ return "Stopping VM";
+
+ case _shenandoah_concurrent_gc:
+ return "Shenandoah Concurrent GC";
+
+ case _shenandoah_traversal_gc:
+ return "Shenandoah Traversal GC";
+
+ case _shenandoah_upgrade_to_full_gc:
+ return "Shenandoah Upgrade To Full GC";
+
And in
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/GCCause.java
you have this:
+ _shenandoah_stop_vm ("Stop VM"),
+ _shenandoah_allocation_failure_evac ("Allocation Failure During
Evacuation"),
+ _shenandoah_concurrent_gc ("Concurrent GC"),
+ _shenandoah_traversal_gc ("Traversal GC"),
+ _shenandoah_upgrade_to_full_gc ("Upgrade to Full GC"),
It would be good to have the exact same strings in both places. There
are currently small differences in all of them. "Evac" vs "Evacuation",
"Stop" vs "Stopping", "Shenandoah" vs "", etc.
May I also suggest that you skip "Shenandoah" in things like "Shenandoah
Concurrent GC" as I kind of think it's implied by the context. But I
also know that CMS/G1 isn't consistent on this point. An alternative
would be to add "Shenandoah" to all of the strings to keep things
consistent, but I'm not sure I like that better. You decide.
> [ ] shenandoah-gc
> [ ] shenandoah-tests
I haven't looked very much on these parts, and I didn't plan to do so in
detail right now. I think it's fine of the folks that have been working
on the Shenandoah code reviewed this.
cheers,
Per
>
>
> Thanks for your patience and ongoing support!
>
> Cheers,
> Roman
>
>> Hi all,
>>
>> here comes round 4 of Shenandoah upstreaming review:
>>
>> This includes fixes for the issues that Per brought up:
>> - Verify and gracefully reject dangerous flags combinations that
>> disables required barriers
>> - Revisited @requires filters in tests
>> - Trim unused code from Shenandoah's SA impl
>> - Move ShenandoahGCTracer to gc/shenandoah
>> - Fix ordering of GC names in various files
>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>>
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>
>> Thanks everybody for taking time to review this!
>> Roman
>>
>>> Hello all,
>>>
>>> Thanks so far for all the reviews and support!
>>>
>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>>
>>> Things we've changed today:
>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>> requires an addition in build machinery though, see
>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>> - Improved zero-disabling and build-code-simplification as suggested by
>>> Magnus and Per
>>> - Cleaned up some leftovers in C2
>>> - Improved C2 loop opts code by introducing another APIs in
>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards now.
>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>>> that.
>>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>>> - Rebased on jdk-12+22
>>>
>>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>>
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>
>>> Thanks,
>>> Roman
>>>
>>>> Alright, we fixed:
>>>> - The minor issues that Kim reported in shared-gc
>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>
>>>> Some notes:
>>>> Leonid: test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>> correct. The @requires there means to exclude runs with both CMS and
>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>
>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>
>>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>>> those with ZGC?
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>
>>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>>> next round).
>>>>
>>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>>> better. I can tell that we're not done with C2 yet. Can you look over
>>>> the code and see what is ok, and especially what is not ok, so that we
>>>> can focus our efforts on the relevant parts?
>>>>
>>>> Updated set of webrevs:
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>
>>>> Thanks,
>>>> Roman
>>>>
>>>>
>>>>> Hi,
>>>>>
>>>>> This is the first round of changes for including Shenandoah GC into
>>>>> mainline.
>>>>> I divided the review into parts that roughly correspond to the mailing lists
>>>>> that would normally review it, and I divided it into 'shared' code
>>>>> changes and
>>>>> 'shenandoah' code changes (actually, mostly additions). The intend is to
>>>>> eventually
>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>
>>>>> JEP:
>>>>> ? https://openjdk.java.net/jeps/189
>>>>> Bug entry:
>>>>>
>>>>> ?https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>
>>>>> Webrevs:
>>>>> ? http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>
>>>>> For those who want to see the full change, have a look at the
>>>>> shenandoah-complete
>>>>>
>>>>> directory,
>>>>> it contains the full combined webrev. Alternatively, there is the file
>>>>> shenandoah-master.patch
>>>>> ,
>>>>> which is what I intend to commit (and which should be equivalent to the
>>>>> 'shenandoah-complete' webrev).
>>>>>
>>>>> Sections to review (at this point) are the following:
>>>>> ?*) shenandoah-gc
>>>>>
>>>>> ??? - Actual Shenandoah implementation, almost completely residing in
>>>>> gc/shenandoah
>>>>>
>>>>> ?*) shared-gc
>>>>>
>>>>> ??? - This is mostly boilerplate that is common to any GC
>>>>> ??? - referenceProcessor.cpp has a little change to make one assert not
>>>>> fail (next to CMS and G1)
>>>>> ??? - taskqueue.hpp has some small adjustments to enable subclassing
>>>>>
>>>>> ?*) shared-serviceability
>>>>>
>>>>> ??? - The usual code to support another GC
>>>>>
>>>>> ?*) shared-runtime
>>>>>
>>>>> ??? - A number of friends declarations to allow Shenandoah iterators to
>>>>> hook up with,
>>>>> ????? e.g. ClassLoaderData, CodeCache, etc
>>>>> ??? - Warning and disabling JFR LeakProfiler
>>>>> ??? - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>> Shenandoah C2 optimizations
>>>>> ??? - Locks initialization in mutexLocker.cpp as usual
>>>>> ??? - VM operations defines for Shenandoah's VM ops
>>>>> ??? - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>> Shenandoah's logging
>>>>> ??? - The usual macros in macro.hpp
>>>>>
>>>>> ?*) shared-build
>>>>>
>>>>> ??? - Add shenandoah feature, enabled by default, as agreed with
>>>>> Vladimir K. beforehand
>>>>> ??? - Some flags for shenandoah-enabled compilation to get
>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>> ????? and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>> Shenandoah's barriers
>>>>> ??? - --param inline-unit-growth=1000 settings for 2 shenandoah source
>>>>> files, which is
>>>>> ????? useful to get the whole marking loop inlined (observed significant
>>>>> regression if we
>>>>> ????? don't)
>>>>>
>>>>> ?*) shared-tests
>>>>>
>>>>> ??? - Test infrastructure to support Shenandoah
>>>>> ??? - Shenandoah test groups
>>>>> ??? - Exclude Shenandoah in various tests that can be run with selected GC
>>>>> ??? - Enable/add configure for Shenandoah for tests that make sense to
>>>>> run with it
>>>>>
>>>>> ?*) shenandoah-tests
>>>>>
>>>>> ??? - Shenandoah specific tests, most reside in gc/shenandoah subdirectory
>>>>> ??? - A couple of tests configurations have been added, e.g.
>>>>> TestGCBasherWithShenandoah.java
>>>>>
>>>>> I intentionally left out shared-compiler for now, because we have some
>>>>> work left to do
>>>>> there, but if you click around you'll find the patch anyway, in case you
>>>>> want to take
>>>>> a peek at it.
>>>>>
>>>>> We have regular builds on:
>>>>> ? - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>> ? - {Windows} x {x86_64},
>>>>> ? - {MacOS X} x {x86_64}
>>>>>
>>>>> This also routinely passes:
>>>>> ? - the new Shenandoah tests
>>>>> ? - jcstress with/without aggressive Shenandoah verification
>>>>> ? - specjvm2008 with/without aggressive Shenandoah verification
>>>>>
>>>>>
>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she deserves
>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>>> teams for tirelessly helping with and reviewing all the GC interface and
>>>>> related changes, and of course the many early adopters for reporting
>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>> without any of you!
>>>>>
>>>>> Best regards,
>>>>> Roman
>>>>>
>>>>
>>>
>>
>
From magnus.ihse.bursie at oracle.com Tue Dec 4 10:42:30 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Tue, 4 Dec 2018 11:42:30 +0100
Subject: RFR: 8212794 IBM-964 is required for AIX default charset
In-Reply-To: <62845d4ddbbfd04433808577bb1b1c7e@linux.vnet.ibm.com>
References: <6e0506fa72311261d3b5923dd58cdb3c@linux.vnet.ibm.com>
<07f980b6bd352a9eff8f2d0d161f3f19@linux.vnet.ibm.com>
<74984761-7152-6026-42a5-fc60a6298a4b@oracle.com>
<260a71c0-31f8-7127-8627-b383ddd73b5b@oracle.com>
<6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
<510056368323d6e1d8b502722c7a325f@linux.vnet.ibm.com>
<235f5bb2-cd60-56bf-3539-cdee07febd53@oracle.com>
<643fe481-310f-d2a3-2156-8ada724e6d30@oracle.com>
<62845d4ddbbfd04433808577bb1b1c7e@linux.vnet.ibm.com>
Message-ID: <3bf6b52d-fc9f-0625-5f56-07838cff40a5@oracle.com>
On 2018-12-04 04:30, Ichiroh Takiguchi wrote:
> Hello Roger.
>
> Thank you for your suggestion.
>
>> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>>
>> I think this is no longer needed since it only has imports.
>> By the way, the style is to import each specific class and
>> avoid wild card imports.
> "import sun.nio.cs.*;" is required because of
> SimpleEUCEncoder.java.template.
> SimpleEUCEncoder.java.template has conversion loop and IBM964 refers it.
> It means that,
> * On AIX platform, SimpleEUCEncoder should be in sun.nio.cs package
> * On non-AIX platform, SimpleEUCEncoder should be in sun.nio.cs.ext
> package
> I could not determine which package has SimpleEUCEncoder.
> And same kind code is available on ISO2022_JP.java.
> Please let me know if you know another way.
I'm not sure I'm fully following the template intricacies here, but
would this not be solved if IBM33722.java was made a template as well?
Then you could do
import $PACKAGE$. SimpleEUCEncoder
Or so I'd think.
/Magnus
>
>> TestIBMBugs:
>> - Please use a style consistent with other methods in the class.
>> In this case spaces are needed around "{" and "}, and a space
>> after "," comma.
> I'll changed.
>
>> - The new method bug8212794, includes a test for x-IBM33722.
>> Is that needed since there does not appear to be a change for 33722?
> Yes, it's no need.
>
> Could you review the fix again ?
> Bug: https://bugs.openjdk.java.net/browse/JDK-8212794
> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.03/
>
> Thanks,
> Ichiroh Takiguchi
>
> On 2018-12-04 05:50, Roger Riggs wrote:
>> Hi Ichiroh,
>>
>> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>>
>> I think this is no longer needed since it only has imports.
>> By the way, the style is to import each specific class and
>> avoid wild card imports.
>>
>> TestIBMBugs:
>> - Please use a style consistent with other methods in the class.
>> In this case spaces are needed around "{" and "}, and a space
>> after "," comma.
>>
>> - The new method bug8212794, includes a test for x-IBM33722.
>> Is that needed since there does not appear to be a change for 33722?
>>
>> Regards, Roger
>>
>>
>> On 11/30/2018 09:58 AM, Magnus Ihse Bursie wrote:
>>>
>>>
>>> On 2018-11-30 10:49, Ichiroh Takiguchi wrote:
>>>> Hello.
>>>>
>>>> Could you review the fix again ?
>>>>
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8212794
>>>> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.02/
>>> I think it looks good but please let someone from core-libs review
>>> it too.
>>>
>>> /Magnus
>>>>
>>>> I just fixed only IBM964 for JDK-8212794.
>>>> (IBM29626C fix is not included)
>>>>
>>>> On non AIX platform (Linux),
>>>> ibm-euctw alias is added for IBM964.
>>>>
>>>> Without fix
>>>> $ jshell
>>>> | Welcome to JShell -- Version 12-ea
>>>> | For an introduction type: /help intro
>>>>
>>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>>> cs ==> x-IBM964
>>>>
>>>> jshell> cs.getClass().getName()
>>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>>
>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>> ibm-964
>>>> cp964
>>>> ibm964
>>>> 964
>>>>
>>>> jshell> /exit
>>>> | Goodbye
>>>> $
>>>> ======
>>>>
>>>> With fix
>>>> ======
>>>> $ jshell
>>>> | Welcome to JShell -- Version 12-internal
>>>> | For an introduction type: /help intro
>>>>
>>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>>> cs ==> x-IBM964
>>>>
>>>> jshell> cs.getClass().getName()
>>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>>
>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>> ibm-964
>>>> cp964
>>>> ibm-euctw
>>>> ibm964
>>>> 964
>>>>
>>>> jshell> /exit
>>>> | Goodbye
>>>> $
>>>> ======
>>>>
>>>> On AIX platform
>>>> IBM964 is moved to java.base module from jdk.charset module.
>>>>
>>>> ======
>>>> $ LANG=zh_TW jshell
>>>> | Welcome to JShell -- Version 12-internal
>>>> | For an introduction type: /help intro
>>>>
>>>> jshell> var cs = java.nio.charset.Charset.defaultCharset()
>>>> cs ==> x-IBM964
>>>>
>>>> jshell> cs.getClass().getName()
>>>> $2 ==> "sun.nio.cs.IBM964"
>>>>
>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>> ibm-964
>>>> cp964
>>>> ibm-euctw
>>>> ibm964
>>>> 964
>>>>
>>>> jshell> /exit
>>>> | Goodbye
>>>> $
>>>> ======
>>>>
>>>> I'd like to obtain a sponsor for this issue.
>>>>
>>>> Thanks,
>>>> Ichiroh Takiguchi
>>>> IBM Japan, Ltd.
>>>>
>>>> On 2018-11-29 22:39, Ichiroh Takiguchi wrote:
>>>>> Hello Alan & Magnus.
>>>>>
>>>>> Sorry for you confusion.
>>>>> I did many copy actions and rename actions.
>>>>> So you may see, I added unexpected code into non AIX platform.
>>>>>
>>>>> I think I should not put 2 kind of modification.
>>>>>
>>>>> For this bug id, I'll handle IBM964 and IBM33722.
>>>>> (also SimpleEUCEncoder.java is required)
>>>>>
>>>>> I'll submit code review again.
>>>>>
>>>>> Additionally, I'll touch
>>>>> make/data/charsetmapping/charsets
>>>>> make/data/charsetmapping/stdcs-aix
>>>>>
>>>>> I'll not touch
>>>>> make/jdk/src/classes/build/tools/charsetmapping/Main.java
>>>>> make/jdk/src/classes/build/tools/charsetmapping/SRC.java
>>>>>
>>>>> My build machine is not so fast, after test is done.
>>>>> I'll post new code.
>>>>>
>>>>> Thanks,
>>>>> Ichiroh Takiguchi
>>>>>
>>>>> On 2018-11-28 19:10, Magnus Ihse Bursie wrote:
>>>>>> On 2018-11-28 10:36, Alan Bateman wrote:
>>>>>>> On 28/11/2018 09:28, Magnus Ihse Bursie wrote:
>>>>>>>> I'm quite unsatisfied with the current handling of character
>>>>>>>> sets in the build in general. :-( I'd really like to modernize
>>>>>>>> it. I have a, slightly fuzzy, laundry list of things I want to
>>>>>>>> fix from a build perspective, but I'm not sure of what
>>>>>>>> "external" requirements are coming from AIX and the general
>>>>>>>> core-libs agenda regarding character sets in general.
>>>>>>>>
>>>>>>>> I think there is a good opportunity to solve many problems at
>>>>>>>> the same time here, as long as everyone agrees on what is the
>>>>>>>> preferred outcome.
>>>>>>> The support in the build to configure the charsets to include in
>>>>>>> java.base on each platform has been working well. Charsets that
>>>>>>> aren't in java.base go into the jdk.charsets service provider
>>>>>>> module and that has been working well too. From the result point
>>>>>>> of view, perhaps, but definitely not from the build perspective.
>>>>>>> ;-) But yes, I understand this is functionality that should be
>>>>>>> kept.
>>>>>>> One thing that we lack is some way to add charsets for specific
>>>>>>> platforms and this comes up with the IBM patches where they are
>>>>>>> looking to adding several additional IBM charsets. One starting
>>>>>>> point that we've touched on in several threads here is dropping
>>>>>>> the EBCDIC charsets from the main stream builds. Going there
>>>>>>> will need build support.
>>>>>> So build support for trivially adding specific charsets to specific
>>>>>> platforms? Both to java.base (for AIX) and jdk.charsets, I presume,
>>>>>> then?
>>>>>>
>>>>>> Can you expand on the issue of dropping ebcdic? What's the problem
>>>>>> that needs build support?
>>>>>>
>>>>>> /Magnus
>>>>>>>
>>>>>>>
>>>>>>> -Alan
>>>>
>>>
>
From rkennke at redhat.com Tue Dec 4 10:53:26 2018
From: rkennke at redhat.com (Roman Kennke)
Date: Tue, 4 Dec 2018 11:53:26 +0100
Subject: RFR (round 4), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To:
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
Message-ID: <91b933b1-9b42-090e-5f0f-07454aeb456e@redhat.com>
Hi Per,
>> Round 5 of Shenandoah review includes:
>> - A fix for the @requires tag in TestFullGCCountTest.java. It should be
>> correct now. We believe the CMS @requires was also not quite right and
>> fixed it the same.
>>
>> It reads now: Don't run this test if:
>> ? - Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
>> true, as set by harness
>> ? - Actual GC set by harness is Shenandoah *and*
>> ExplicitGCInvokesConcurrent is not set false by harness (it's true by
>> default in Shenandoah, so this needs to be double-inverteed).
>>
>> The @requires for CMS was wrong before (we think), because it would also
>> filter defaultGC + ExplicitGCInvokesConcurrent.
>>
>> - Sorting of macros was fixed, as was pointed out by Per
>> - Some stuff was added to SA, as suggested by Jini
>> - Rebased on most current jdk/jdk code
>>
>> Webrevs:
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
>>
>> I also need reviews from GC reviewers for the CSR:
>> https://bugs.openjdk.java.net/browse/JDK-8214349
>>
>> I already got reviews for:
>> [x] shared-runtime (coleenp)
>> [x] shared-compiler (kvn)
>>
>> I got reviews for shared-build, but an earlier version, so maybe makes
>> sense to look over this again. Erik J, Magnus?
>>
>> I still need approvals for:
>> [ ] shared-build????????? (kvn, erikj, ihse, pliden)
>> [ ] shared-gc???????????? (pliden, kbarrett)
>> [ ] shared-serviceability (jgeorge, pliden)
>> [ ] shared-tests????????? (lmesnik, pliden)
>
> The above parts look good to me. Reviewed.
Great! Thanks!
> Just one tiny nit (and I don't need to see a new webrev for this):
>
> In src/hotspot/share/gc/shared/gcCause.cpp you have this:
>
> +??? case _shenandoah_allocation_failure_evac:
> +????? return "Allocation Failure During Evac";
> +
> +??? case _shenandoah_stop_vm:
> +????? return "Stopping VM";
> +
> +??? case _shenandoah_concurrent_gc:
> +????? return "Shenandoah Concurrent GC";
> +
> +??? case _shenandoah_traversal_gc:
> +????? return "Shenandoah Traversal GC";
> +
> +??? case _shenandoah_upgrade_to_full_gc:
> +????? return "Shenandoah Upgrade To Full GC";
> +
>
> And in
> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/GCCause.java
> you have this:
>
> +? _shenandoah_stop_vm ("Stop VM"),
> +? _shenandoah_allocation_failure_evac ("Allocation Failure During
> Evacuation"),
> +? _shenandoah_concurrent_gc ("Concurrent GC"),
> +? _shenandoah_traversal_gc ("Traversal GC"),
> +? _shenandoah_upgrade_to_full_gc ("Upgrade to Full GC"),
>
> It would be good to have the exact same strings in both places. There
> are currently small differences in all of them. "Evac" vs "Evacuation",
> "Stop" vs "Stopping", "Shenandoah" vs "", etc.
>
> May I also suggest that you skip "Shenandoah" in things like "Shenandoah
> Concurrent GC" as I kind of think it's implied by the context. But I
> also know that CMS/G1 isn't consistent on this point. An alternative
> would be to add "Shenandoah" to all of the strings to keep things
> consistent, but I'm not sure I like that better. You decide.
I'm addressing it here:
http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-December/008572.html
>> [ ] shenandoah-gc
>> [ ] shenandoah-tests
>
> I haven't looked very much on these parts, and I didn't plan to do so in
> detail right now. I think it's fine of the folks that have been working
> on the Shenandoah code reviewed this.
Yes, I think so too (except maybe stuff like shenandoah_globals.hpp, but
that was already reviewed I think).
Thanks for reviewing, Per!
Roman
> cheers,
> Per
>
>>
>>
>> Thanks for your patience and ongoing support!
>>
>> Cheers,
>> Roman
>>
>>> Hi all,
>>>
>>> here comes round 4 of Shenandoah upstreaming review:
>>>
>>> This includes fixes for the issues that Per brought up:
>>> - Verify and gracefully reject dangerous flags combinations that
>>> disables required barriers
>>> - Revisited @requires filters in tests
>>> - Trim unused code from Shenandoah's SA impl
>>> - Move ShenandoahGCTracer to gc/shenandoah
>>> - Fix ordering of GC names in various files
>>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>>>
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>>
>>> Thanks everybody for taking time to review this!
>>> Roman
>>>
>>>> Hello all,
>>>>
>>>> Thanks so far for all the reviews and support!
>>>>
>>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>>> Also, I fixed the numbering of my webrevs to match the review-round.
>>>> ;-)
>>>>
>>>> Things we've changed today:
>>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>>> requires an addition in build machinery though, see
>>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>>> - Improved zero-disabling and build-code-simplification as suggested by
>>>> Magnus and Per
>>>> - Cleaned up some leftovers in C2
>>>> - Improved C2 loop opts code by introducing another APIs in
>>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC
>>>> guards now.
>>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>>>> that.
>>>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>>>> - Rebased on jdk-12+22
>>>>
>>>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>>>
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>>
>>>> Thanks,
>>>> Roman
>>>>
>>>>> Alright, we fixed:
>>>>> - The minor issues that Kim reported in shared-gc
>>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>>
>>>>> Some notes:
>>>>> Leonid:? test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>>> correct. The @requires there means to exclude runs with both CMS and
>>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>>>> fine. Adding the same clause for Shenandoah means the same, and
>>>>> filters
>>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>>
>>>>> See:
>>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>>
>>>>>
>>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>>
>>>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>>>> those with ZGC?
>>>>>
>>>>> See:
>>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>>
>>>>>
>>>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>>>> next round).
>>>>>
>>>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>>>> better. I can tell that we're not done with C2 yet. Can you look over
>>>>> the code and see what is ok, and especially what is not ok, so that we
>>>>> can focus our efforts on the relevant parts?
>>>>>
>>>>> Updated set of webrevs:
>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>>
>>>>> Thanks,
>>>>> Roman
>>>>>
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> This is the first round of changes for including Shenandoah GC into
>>>>>> mainline.
>>>>>> I divided the review into parts that roughly correspond to the
>>>>>> mailing lists
>>>>>> that would normally review it, and I divided it into 'shared' code
>>>>>> changes and
>>>>>> 'shenandoah' code changes (actually, mostly additions). The intend
>>>>>> is to
>>>>>> eventually
>>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>>
>>>>>> JEP:
>>>>>> ?? https://openjdk.java.net/jeps/189
>>>>>> Bug entry:
>>>>>>
>>>>>> ??https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>>
>>>>>> Webrevs:
>>>>>> ?? http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>>
>>>>>> For those who want to see the full change, have a look at the
>>>>>> shenandoah-complete
>>>>>>
>>>>>>
>>>>>> directory,
>>>>>> it contains the full combined webrev. Alternatively, there is the
>>>>>> file
>>>>>> shenandoah-master.patch
>>>>>> ,
>>>>>>
>>>>>> which is what I intend to commit (and which should be equivalent
>>>>>> to the
>>>>>> 'shenandoah-complete' webrev).
>>>>>>
>>>>>> Sections to review (at this point) are the following:
>>>>>> ??*) shenandoah-gc
>>>>>>
>>>>>>
>>>>>> ???? - Actual Shenandoah implementation, almost completely
>>>>>> residing in
>>>>>> gc/shenandoah
>>>>>>
>>>>>> ??*) shared-gc
>>>>>>
>>>>>>
>>>>>> ???? - This is mostly boilerplate that is common to any GC
>>>>>> ???? - referenceProcessor.cpp has a little change to make one
>>>>>> assert not
>>>>>> fail (next to CMS and G1)
>>>>>> ???? - taskqueue.hpp has some small adjustments to enable subclassing
>>>>>>
>>>>>> ??*) shared-serviceability
>>>>>>
>>>>>>
>>>>>> ???? - The usual code to support another GC
>>>>>>
>>>>>> ??*) shared-runtime
>>>>>>
>>>>>>
>>>>>> ???? - A number of friends declarations to allow Shenandoah
>>>>>> iterators to
>>>>>> hook up with,
>>>>>> ?????? e.g. ClassLoaderData, CodeCache, etc
>>>>>> ???? - Warning and disabling JFR LeakProfiler
>>>>>> ???? - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>>> Shenandoah C2 optimizations
>>>>>> ???? - Locks initialization in mutexLocker.cpp as usual
>>>>>> ???? - VM operations defines for Shenandoah's VM ops
>>>>>> ???? - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>>> Shenandoah's logging
>>>>>> ???? - The usual macros in macro.hpp
>>>>>>
>>>>>> ??*) shared-build
>>>>>>
>>>>>>
>>>>>> ???? - Add shenandoah feature, enabled by default, as agreed with
>>>>>> Vladimir K. beforehand
>>>>>> ???? - Some flags for shenandoah-enabled compilation to get
>>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>>> ?????? and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>>> Shenandoah's barriers
>>>>>> ???? - --param inline-unit-growth=1000 settings for 2 shenandoah
>>>>>> source
>>>>>> files, which is
>>>>>> ?????? useful to get the whole marking loop inlined (observed
>>>>>> significant
>>>>>> regression if we
>>>>>> ?????? don't)
>>>>>>
>>>>>> ??*) shared-tests
>>>>>>
>>>>>>
>>>>>> ???? - Test infrastructure to support Shenandoah
>>>>>> ???? - Shenandoah test groups
>>>>>> ???? - Exclude Shenandoah in various tests that can be run with
>>>>>> selected GC
>>>>>> ???? - Enable/add configure for Shenandoah for tests that make
>>>>>> sense to
>>>>>> run with it
>>>>>>
>>>>>> ??*) shenandoah-tests
>>>>>>
>>>>>>
>>>>>> ???? - Shenandoah specific tests, most reside in gc/shenandoah
>>>>>> subdirectory
>>>>>> ???? - A couple of tests configurations have been added, e.g.
>>>>>> TestGCBasherWithShenandoah.java
>>>>>>
>>>>>> I intentionally left out shared-compiler for now, because we have
>>>>>> some
>>>>>> work left to do
>>>>>> there, but if you click around you'll find the patch anyway, in
>>>>>> case you
>>>>>> want to take
>>>>>> a peek at it.
>>>>>>
>>>>>> We have regular builds on:
>>>>>> ?? - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>>> ?? - {Windows} x {x86_64},
>>>>>> ?? - {MacOS X} x {x86_64}
>>>>>>
>>>>>> This also routinely passes:
>>>>>> ?? - the new Shenandoah tests
>>>>>> ?? - jcstress with/without aggressive Shenandoah verification
>>>>>> ?? - specjvm2008 with/without aggressive Shenandoah verification
>>>>>>
>>>>>>
>>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she
>>>>>> deserves
>>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>>>> teams for tirelessly helping with and reviewing all the GC
>>>>>> interface and
>>>>>> related changes, and of course the many early adopters for reporting
>>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>>> without any of you!
>>>>>>
>>>>>> Best regards,
>>>>>> Roman
>>>>>>
>>>>>
>>>>
>>>
>>
From takiguc at linux.vnet.ibm.com Tue Dec 4 11:33:27 2018
From: takiguc at linux.vnet.ibm.com (Ichiroh Takiguchi)
Date: Tue, 04 Dec 2018 20:33:27 +0900
Subject: RFR: 8212794 IBM-964 is required for AIX default charset
In-Reply-To: <3bf6b52d-fc9f-0625-5f56-07838cff40a5@oracle.com>
References: <6e0506fa72311261d3b5923dd58cdb3c@linux.vnet.ibm.com>
<07f980b6bd352a9eff8f2d0d161f3f19@linux.vnet.ibm.com>
<74984761-7152-6026-42a5-fc60a6298a4b@oracle.com>
<260a71c0-31f8-7127-8627-b383ddd73b5b@oracle.com>
<6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
<510056368323d6e1d8b502722c7a325f@linux.vnet.ibm.com>
<235f5bb2-cd60-56bf-3539-cdee07febd53@oracle.com>
<643fe481-310f-d2a3-2156-8ada724e6d30@oracle.com>
<62845d4ddbbfd04433808577bb1b1c7e@linux.vnet.ibm.com>
<3bf6b52d-fc9f-0625-5f56-07838cff40a5@oracle.com>
Message-ID: <688f9f696141dac6377b065472b79770@linux.vnet.ibm.com>
Hello Magnus.
IBM33722 should be in sun.nio.cs.ext package on jdk.charset module
Because it's not used for default encoding on AIX platform.
In case of template file, build tool checks
make/data/charsetmapping/stdcs-aix file for this case.
If class name is there, it will be migrated to sun.nio.cs package.
About IBM33722,
If IBM33722 is moved to sun.nio.cs package also,
"import sun.nio.cs.*;" is no need on IBM33722.java
If IBM33722 is not in stdcs-aix,
"import sun.nio.cs.*;" is still required on IBM33722.java
Thanks,
Ichiroh Takiguchi
On 2018-12-04 19:42, Magnus Ihse Bursie wrote:
> On 2018-12-04 04:30, Ichiroh Takiguchi wrote:
>> Hello Roger.
>>
>> Thank you for your suggestion.
>>
>>> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>>>
>>> I think this is no longer needed since it only has imports.
>>> By the way, the style is to import each specific class and
>>> avoid wild card imports.
>> "import sun.nio.cs.*;" is required because of
>> SimpleEUCEncoder.java.template.
>> SimpleEUCEncoder.java.template has conversion loop and IBM964 refers
>> it.
>> It means that,
>> * On AIX platform, SimpleEUCEncoder should be in sun.nio.cs package
>> * On non-AIX platform, SimpleEUCEncoder should be in sun.nio.cs.ext
>> package
>> I could not determine which package has SimpleEUCEncoder.
>> And same kind code is available on ISO2022_JP.java.
>> Please let me know if you know another way.
> I'm not sure I'm fully following the template intricacies here, but
> would this not be solved if IBM33722.java was made a template as well?
> Then you could do
> import $PACKAGE$. SimpleEUCEncoder
> Or so I'd think.
>
> /Magnus
>>
>>> TestIBMBugs:
>>> - Please use a style consistent with other methods in the class.
>>> In this case spaces are needed around "{" and "}, and a space
>>> after "," comma.
>> I'll changed.
>>
>>> - The new method bug8212794, includes a test for x-IBM33722.
>>> Is that needed since there does not appear to be a change for
>>> 33722?
>> Yes, it's no need.
>>
>> Could you review the fix again ?
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8212794
>> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.03/
>>
>> Thanks,
>> Ichiroh Takiguchi
>>
>> On 2018-12-04 05:50, Roger Riggs wrote:
>>> Hi Ichiroh,
>>>
>>> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>>>
>>> I think this is no longer needed since it only has imports.
>>> By the way, the style is to import each specific class and
>>> avoid wild card imports.
>>>
>>> TestIBMBugs:
>>> - Please use a style consistent with other methods in the class.
>>> In this case spaces are needed around "{" and "}, and a space
>>> after "," comma.
>>>
>>> - The new method bug8212794, includes a test for x-IBM33722.
>>> Is that needed since there does not appear to be a change for
>>> 33722?
>>>
>>> Regards, Roger
>>>
>>>
>>> On 11/30/2018 09:58 AM, Magnus Ihse Bursie wrote:
>>>>
>>>>
>>>> On 2018-11-30 10:49, Ichiroh Takiguchi wrote:
>>>>> Hello.
>>>>>
>>>>> Could you review the fix again ?
>>>>>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8212794
>>>>> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.02/
>>>> I think it looks good but please let someone from core-libs review
>>>> it too.
>>>>
>>>> /Magnus
>>>>>
>>>>> I just fixed only IBM964 for JDK-8212794.
>>>>> (IBM29626C fix is not included)
>>>>>
>>>>> On non AIX platform (Linux),
>>>>> ibm-euctw alias is added for IBM964.
>>>>>
>>>>> Without fix
>>>>> $ jshell
>>>>> | Welcome to JShell -- Version 12-ea
>>>>> | For an introduction type: /help intro
>>>>>
>>>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>>>> cs ==> x-IBM964
>>>>>
>>>>> jshell> cs.getClass().getName()
>>>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>>>
>>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>>> ibm-964
>>>>> cp964
>>>>> ibm964
>>>>> 964
>>>>>
>>>>> jshell> /exit
>>>>> | Goodbye
>>>>> $
>>>>> ======
>>>>>
>>>>> With fix
>>>>> ======
>>>>> $ jshell
>>>>> | Welcome to JShell -- Version 12-internal
>>>>> | For an introduction type: /help intro
>>>>>
>>>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>>>> cs ==> x-IBM964
>>>>>
>>>>> jshell> cs.getClass().getName()
>>>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>>>
>>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>>> ibm-964
>>>>> cp964
>>>>> ibm-euctw
>>>>> ibm964
>>>>> 964
>>>>>
>>>>> jshell> /exit
>>>>> | Goodbye
>>>>> $
>>>>> ======
>>>>>
>>>>> On AIX platform
>>>>> IBM964 is moved to java.base module from jdk.charset module.
>>>>>
>>>>> ======
>>>>> $ LANG=zh_TW jshell
>>>>> | Welcome to JShell -- Version 12-internal
>>>>> | For an introduction type: /help intro
>>>>>
>>>>> jshell> var cs = java.nio.charset.Charset.defaultCharset()
>>>>> cs ==> x-IBM964
>>>>>
>>>>> jshell> cs.getClass().getName()
>>>>> $2 ==> "sun.nio.cs.IBM964"
>>>>>
>>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>>> ibm-964
>>>>> cp964
>>>>> ibm-euctw
>>>>> ibm964
>>>>> 964
>>>>>
>>>>> jshell> /exit
>>>>> | Goodbye
>>>>> $
>>>>> ======
>>>>>
>>>>> I'd like to obtain a sponsor for this issue.
>>>>>
>>>>> Thanks,
>>>>> Ichiroh Takiguchi
>>>>> IBM Japan, Ltd.
>>>>>
>>>>> On 2018-11-29 22:39, Ichiroh Takiguchi wrote:
>>>>>> Hello Alan & Magnus.
>>>>>>
>>>>>> Sorry for you confusion.
>>>>>> I did many copy actions and rename actions.
>>>>>> So you may see, I added unexpected code into non AIX platform.
>>>>>>
>>>>>> I think I should not put 2 kind of modification.
>>>>>>
>>>>>> For this bug id, I'll handle IBM964 and IBM33722.
>>>>>> (also SimpleEUCEncoder.java is required)
>>>>>>
>>>>>> I'll submit code review again.
>>>>>>
>>>>>> Additionally, I'll touch
>>>>>> make/data/charsetmapping/charsets
>>>>>> make/data/charsetmapping/stdcs-aix
>>>>>>
>>>>>> I'll not touch
>>>>>> make/jdk/src/classes/build/tools/charsetmapping/Main.java
>>>>>> make/jdk/src/classes/build/tools/charsetmapping/SRC.java
>>>>>>
>>>>>> My build machine is not so fast, after test is done.
>>>>>> I'll post new code.
>>>>>>
>>>>>> Thanks,
>>>>>> Ichiroh Takiguchi
>>>>>>
>>>>>> On 2018-11-28 19:10, Magnus Ihse Bursie wrote:
>>>>>>> On 2018-11-28 10:36, Alan Bateman wrote:
>>>>>>>> On 28/11/2018 09:28, Magnus Ihse Bursie wrote:
>>>>>>>>> I'm quite unsatisfied with the current handling of character
>>>>>>>>> sets in the build in general. :-( I'd really like to modernize
>>>>>>>>> it. I have a, slightly fuzzy, laundry list of things I want to
>>>>>>>>> fix from a build perspective, but I'm not sure of what
>>>>>>>>> "external" requirements are coming from AIX and the general
>>>>>>>>> core-libs agenda regarding character sets in general.
>>>>>>>>>
>>>>>>>>> I think there is a good opportunity to solve many problems at
>>>>>>>>> the same time here, as long as everyone agrees on what is the
>>>>>>>>> preferred outcome.
>>>>>>>> The support in the build to configure the charsets to include in
>>>>>>>> java.base on each platform has been working well. Charsets that
>>>>>>>> aren't in java.base go into the jdk.charsets service provider
>>>>>>>> module and that has been working well too. From the result point
>>>>>>>> of view, perhaps, but definitely not from the build perspective.
>>>>>>>> ;-) But yes, I understand this is functionality that should be
>>>>>>>> kept.
>>>>>>>> One thing that we lack is some way to add charsets for specific
>>>>>>>> platforms and this comes up with the IBM patches where they are
>>>>>>>> looking to adding several additional IBM charsets. One starting
>>>>>>>> point that we've touched on in several threads here is dropping
>>>>>>>> the EBCDIC charsets from the main stream builds. Going there
>>>>>>>> will need build support.
>>>>>>> So build support for trivially adding specific charsets to
>>>>>>> specific
>>>>>>> platforms? Both to java.base (for AIX) and jdk.charsets, I
>>>>>>> presume,
>>>>>>> then?
>>>>>>>
>>>>>>> Can you expand on the issue of dropping ebcdic? What's the
>>>>>>> problem
>>>>>>> that needs build support?
>>>>>>>
>>>>>>> /Magnus
>>>>>>>>
>>>>>>>>
>>>>>>>> -Alan
>>>>>
>>>>
>>
From adam.farley at uk.ibm.com Tue Dec 4 12:08:24 2018
From: adam.farley at uk.ibm.com (Adam Farley8)
Date: Tue, 4 Dec 2018 12:08:24 +0000
Subject: RFR(XS): 8214063: [AIX] Disable symbol visibility flags
In-Reply-To:
References:
<37b6d4e5-2065-2461-0aec-77941033d3ca@oracle.com>
Message-ID:
Thanks Volker. :)
Best Regards
Adam Farley
IBM Runtimes
Volker Simonis wrote on 04/12/2018 08:30:58:
> From: Volker Simonis
> To: adam.farley at uk.ibm.com
> Cc: build-dev , Magnus Ihse Bursie
> , ppc-aix-port-dev at openjdk.java.net
> Date: 04/12/2018 08:31
> Subject: Re: RFR(XS): 8214063: [AIX] Disable symbol visibility flags
>
> Hi Adam,
>
> I've just pushed the change:
>
> INVALID URI REMOVED
>
u=http-3A__hg.openjdk.java.net_jdk_jdk_rev_fc54d27e58d8&d=DwIBaQ&c=jf_iaSHvJObTbx-
> siA1ZOg&r=P5m8KWUXJf-
> CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=NhALBBoEo6HsbPIjB8bJJj30UR8DRP-
> PuJckMbmJvA0&s=gLabfGk2XJdLwimruwQdLAmjBXtCueO7qR01_xw5wuw&e=
>
> Best regards,
> Volker
> On Thu, Nov 29, 2018 at 5:54 PM Adam Farley8
wrote:
> >
> > Hi All,
> >
> > The build passed on xlC 13.1 with the makefile patch I proposed
> (good catch on the comments Volkar!).
> >
> > With Volkar, Erik, Matthias, and Magnus all approving the change,
> it sounds like we're good to merge!
> >
> > Volkar, can you do the honours?
> >
> > Best Regards
> >
> > Adam Farley
> > IBM Runtimes
> >
> > P.S. I approve the change too. ;)
> >
> >
> > Volker Simonis wrote on 29/11/2018
11:54:33:
> >
> > > From: Volker Simonis
> > > To: Magnus Ihse Bursie
> > > Cc: build-dev , ppc-aix-port-
> > > dev at openjdk.java.net, adam.farley at uk.ibm.com
> > > Date: 29/11/2018 11:54
> > > Subject: Re: RFR(XS): 8214063: [AIX] Disable symbol visibility flags
> > >
> > > On Thu, Nov 29, 2018 at 12:20 PM Magnus Ihse Bursie
> > > wrote:
> > > >
> > > > On 2018-11-27 16:33, Volker Simonis wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > can I please have a review for the following trivial change
which
> > > > > simply disables the symbol visibility flags on AIX:
> > > > >
> > > > > INVALID URI REMOVED
> > >
>
u=http-3A__cr.openjdk.java.net_-7Esimonis_webrevs_2018_8214063_&d=DwIBaQ&c=jf_iaSHvJObTbx-
> > > siA1ZOg&r=P5m8KWUXJf-
> > > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=6y4Npxy6aG4q8E9Xca--
> > >
YxF4UGVrVEIqu_wVvivFVUA&s=DptrWUUtJCcpUCbCWkkBOeFJCVk5im3hm9T_DcD0Jd8&e=
> > > > > INVALID URI REMOVED
> > >
>
u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8214063&d=DwIBaQ&c=jf_iaSHvJObTbx-
> > > siA1ZOg&r=P5m8KWUXJf-
> > > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=6y4Npxy6aG4q8E9Xca--
> > >
YxF4UGVrVEIqu_wVvivFVUA&s=jBFABkJb5E5W9K8pMX794-3gnpLfPyi3oASA1kizQ7A&e=
> > > > Looks good to me. I am sorry for the mess I caused by
optimisically
> > > > trying to fix things on a platform I could not compile on... :(
> > > >
> > >
> > > Thanks for the review and don't worry! We really appreciate your
> > > continued help. It's really us who should have tested and spotted
the
> > > problems earlier :)
> > >
> > > Regards,
> > > Volker
> > >
> > > > This also reminds me that the visibility flags *really* shouldmove
into
> > > > configure/spec, not be sprinkled like this in the make files.
> > > >
> > > > /Magnus
> > > > >
> > > > > Change "8202322: AIX: symbol visibility flags not support onxlc
12.1"
> > > > > [1] blindly introduced these flags for all xlC compiler versions
>
> > > > > 12.1 without ever testing it (which should not have happened).
Now
> > > > > that people are starting to really use xlC 13 it turns out that
there
> > > > > is more to do than just enabling the flags. This future work is
> > > > > covered by "8204541: Correctly support AIX xlC 13.1 symbol
visibility
> > > > > flags".
> > > > >
> > > > > Thank you and best regards,
> > > > > Volker
> > > > >
> > > > > [1] INVALID URI REMOVED
> > >
>
u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8202322&d=DwIBaQ&c=jf_iaSHvJObTbx-
> > > siA1ZOg&r=P5m8KWUXJf-
> > > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=6y4Npxy6aG4q8E9Xca--
> > >
YxF4UGVrVEIqu_wVvivFVUA&s=pd7-rH7OPxeaq2g6S0dQPmb_3-8PLi8JZFKcP_Abp6Q&e=
> > > > > [2] INVALID URI REMOVED
> > >
>
u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8204541&d=DwIBaQ&c=jf_iaSHvJObTbx-
> > > siA1ZOg&r=P5m8KWUXJf-
> > > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=6y4Npxy6aG4q8E9Xca--
> > >
YxF4UGVrVEIqu_wVvivFVUA&s=q7KHUASpF-opdcLXbTTUT1bPoKrkTeaHTtd7c2jN4rc&e=
> > > >
> > >
> >
> > Unless stated otherwise above:
> > IBM United Kingdom Limited - Registered in England and Wales with
> number 741598.
> > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU
>
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
From magnus.ihse.bursie at oracle.com Tue Dec 4 12:34:39 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Tue, 4 Dec 2018 13:34:39 +0100
Subject: RFR: JDK-8214780 Create pandoc package for Windows
Message-ID: <4a71c7e3-7f0f-127d-784d-0fedeb62321b@oracle.com>
As requested in JDK-8179917, we should create a jib package for pandoc
on Windows.
Bug: https://bugs.openjdk.java.net/browse/JDK-8214780
WebRev:
http://cr.openjdk.java.net/~ihse/JDK-8214780-create-pandoc-package-for-windows/webrev.01
/Magnus
From doko at ubuntu.com Tue Dec 4 13:24:00 2018
From: doko at ubuntu.com (Matthias Klose)
Date: Tue, 4 Dec 2018 14:24:00 +0100
Subject: bootcycle builds x86_64-linux-gnu?
Message-ID: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
with jdk-12+22, bootcycle builds fail at least on x86_64-linux-gnu. Is there
some place where I can check if this kind of build succeeds for others?
thanks, Matthias
From shade at redhat.com Tue Dec 4 13:54:06 2018
From: shade at redhat.com (Aleksey Shipilev)
Date: Tue, 4 Dec 2018 14:54:06 +0100
Subject: bootcycle builds x86_64-linux-gnu?
In-Reply-To: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
References: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
Message-ID:
On 12/4/18 2:24 PM, Matthias Klose wrote:
> with jdk-12+22, bootcycle builds fail at least on x86_64-linux-gnu. Is there
> some place where I can check if this kind of build succeeds for others?
Just did this on jdk/jdk tip, and it passed:
$ CONF=linux-x86_64-server-fastdebug make bootcycle-images
...
Creating CDS archive for jdk image
Stopping sjavac server
Finished building target 'product-images' in configuration 'linux-x86_64-server-fastdebug'
Finished building target 'bootcycle-images' in configuration 'linux-x86_64-server-fastdebug'
-Aleksey
From Roger.Riggs at oracle.com Tue Dec 4 14:36:41 2018
From: Roger.Riggs at oracle.com (Roger Riggs)
Date: Tue, 4 Dec 2018 09:36:41 -0500
Subject: RFR: 8212794 IBM-964 is required for AIX default charset
In-Reply-To: <62845d4ddbbfd04433808577bb1b1c7e@linux.vnet.ibm.com>
References: <6e0506fa72311261d3b5923dd58cdb3c@linux.vnet.ibm.com>
<07f980b6bd352a9eff8f2d0d161f3f19@linux.vnet.ibm.com>
<74984761-7152-6026-42a5-fc60a6298a4b@oracle.com>
<260a71c0-31f8-7127-8627-b383ddd73b5b@oracle.com>
<6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
<510056368323d6e1d8b502722c7a325f@linux.vnet.ibm.com>
<235f5bb2-cd60-56bf-3539-cdee07febd53@oracle.com>
<643fe481-310f-d2a3-2156-8ada724e6d30@oracle.com>
<62845d4ddbbfd04433808577bb1b1c7e@linux.vnet.ibm.com>
Message-ID: <35fcde78-4558-fdce-48cf-1ac80c3517b7@oracle.com>
Hi Ichiroh,
On 12/03/2018 10:30 PM, Ichiroh Takiguchi wrote:
> Hello Roger.
>
> Thank you for your suggestion.
>
>> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>>
>> ??? I think this is no longer needed since it only has imports.
>> ??? By the way, the style is to import each specific class and
>> avoid wild card imports.
> "import sun.nio.cs.*;" is required because of
> SimpleEUCEncoder.java.template.
> SimpleEUCEncoder.java.template has conversion loop and IBM964 refers it.
> It means that,
> * On AIX platform, SimpleEUCEncoder should be in sun.nio.cs package
> * On non-AIX platform, SimpleEUCEncoder should be in sun.nio.cs.ext
> package
> I could not determine which package has SimpleEUCEncoder.
> And same kind code is available on ISO2022_JP.java.
> Please let me know if you know another way.
I understand, it is because IBM33722 may or may not be in the same
package as SimpleEUCEncoder.
It is SimpleEUCEncoder that may be in a different package, not IBM33722.
>
>> TestIBMBugs:
>> ? - Please use a style consistent with other methods in the class.
>> ??? In this case spaces are needed around "{" and "}, and a space
>> after "," comma.
> I'll changed.
226-227:? add a space before "{" to have the same style as line 210.
>
>> ? - The new method bug8212794, includes a test for x-IBM33722.
>> ??? Is that needed since there does not appear to be a change for 33722?
> Yes, it's no need.
>
> Could you review the fix again ?
> Bug:??? https://bugs.openjdk.java.net/browse/JDK-8212794
> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.03/
Thanks, looks fine.
Regards, Roger
>
> Thanks,
> Ichiroh Takiguchi
>
> On 2018-12-04 05:50, Roger Riggs wrote:
>> Hi Ichiroh,
>>
>> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>>
>> ??? I think this is no longer needed since it only has imports.
>> ??? By the way, the style is to import each specific class and
>> avoid wild card imports.
>>
>> TestIBMBugs:
>> ? - Please use a style consistent with other methods in the class.
>> ??? In this case spaces are needed around "{" and "}, and a space
>> after "," comma.
>>
>> ? - The new method bug8212794, includes a test for x-IBM33722.
>> ??? Is that needed since there does not appear to be a change for 33722?
>>
>> Regards, Roger
>>
>>
>> On 11/30/2018 09:58 AM, Magnus Ihse Bursie wrote:
>>>
>>>
>>> On 2018-11-30 10:49, Ichiroh Takiguchi wrote:
>>>> Hello.
>>>>
>>>> Could you review the fix again ?
>>>>
>>>> Bug:??? https://bugs.openjdk.java.net/browse/JDK-8212794
>>>> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.02/
>>> I think it looks good but please let someone from core-libs review
>>> it too.
>>>
>>> /Magnus
>>>>
>>>> I just fixed only IBM964 for JDK-8212794.
>>>> (IBM29626C fix is not included)
>>>>
>>>> On non AIX platform (Linux),
>>>> ibm-euctw alias is added for IBM964.
>>>>
>>>> Without fix
>>>> $ jshell
>>>> |? Welcome to JShell -- Version 12-ea
>>>> |? For an introduction type: /help intro
>>>>
>>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>>> cs ==> x-IBM964
>>>>
>>>> jshell> cs.getClass().getName()
>>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>>
>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>> ibm-964
>>>> cp964
>>>> ibm964
>>>> 964
>>>>
>>>> jshell> /exit
>>>> |? Goodbye
>>>> $
>>>> ======
>>>>
>>>> With fix
>>>> ======
>>>> $ jshell
>>>> |? Welcome to JShell -- Version 12-internal
>>>> |? For an introduction type: /help intro
>>>>
>>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>>> cs ==> x-IBM964
>>>>
>>>> jshell> cs.getClass().getName()
>>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>>
>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>> ibm-964
>>>> cp964
>>>> ibm-euctw
>>>> ibm964
>>>> 964
>>>>
>>>> jshell> /exit
>>>> |? Goodbye
>>>> $
>>>> ======
>>>>
>>>> On AIX platform
>>>> IBM964 is moved to java.base module from jdk.charset module.
>>>>
>>>> ======
>>>> $ LANG=zh_TW jshell
>>>> |? Welcome to JShell -- Version 12-internal
>>>> |? For an introduction type: /help intro
>>>>
>>>> jshell> var cs = java.nio.charset.Charset.defaultCharset()
>>>> cs ==> x-IBM964
>>>>
>>>> jshell> cs.getClass().getName()
>>>> $2 ==> "sun.nio.cs.IBM964"
>>>>
>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>> ibm-964
>>>> cp964
>>>> ibm-euctw
>>>> ibm964
>>>> 964
>>>>
>>>> jshell> /exit
>>>> |? Goodbye
>>>> $
>>>> ======
>>>>
>>>> I'd like to obtain a sponsor for this issue.
>>>>
>>>> Thanks,
>>>> Ichiroh Takiguchi
>>>> IBM Japan, Ltd.
>>>>
>>>> On 2018-11-29 22:39, Ichiroh Takiguchi wrote:
>>>>> Hello Alan & Magnus.
>>>>>
>>>>> Sorry for you confusion.
>>>>> I did many copy actions and rename actions.
>>>>> So you may see, I added unexpected code into non AIX platform.
>>>>>
>>>>> I think I should not put 2 kind of modification.
>>>>>
>>>>> For this bug id, I'll handle IBM964 and IBM33722.
>>>>> (also SimpleEUCEncoder.java is required)
>>>>>
>>>>> I'll submit code review again.
>>>>>
>>>>> Additionally, I'll touch
>>>>> make/data/charsetmapping/charsets
>>>>> make/data/charsetmapping/stdcs-aix
>>>>>
>>>>> I'll not touch
>>>>> make/jdk/src/classes/build/tools/charsetmapping/Main.java
>>>>> make/jdk/src/classes/build/tools/charsetmapping/SRC.java
>>>>>
>>>>> My build machine is not so fast, after test is done.
>>>>> I'll post new code.
>>>>>
>>>>> Thanks,
>>>>> Ichiroh Takiguchi
>>>>>
>>>>> On 2018-11-28 19:10, Magnus Ihse Bursie wrote:
>>>>>> On 2018-11-28 10:36, Alan Bateman wrote:
>>>>>>> On 28/11/2018 09:28, Magnus Ihse Bursie wrote:
>>>>>>>> I'm quite unsatisfied with the current handling of character
>>>>>>>> sets in the build in general. :-( I'd really like to modernize
>>>>>>>> it. I have a, slightly fuzzy, laundry list of things I want to
>>>>>>>> fix from a build perspective, but I'm not sure of what
>>>>>>>> "external" requirements are coming from AIX and the general
>>>>>>>> core-libs agenda regarding character sets in general.
>>>>>>>>
>>>>>>>> I think there is a good opportunity to solve many problems at
>>>>>>>> the same time here, as long as everyone agrees on what is the
>>>>>>>> preferred outcome.
>>>>>>> The support in the build to configure the charsets to include in
>>>>>>> java.base on each platform has been working well. Charsets that
>>>>>>> aren't in java.base go into the jdk.charsets service provider
>>>>>>> module and that has been working well too. From the result point
>>>>>>> of view, perhaps, but definitely not from the build perspective.
>>>>>>> ;-) But yes, I understand this is functionality that should be
>>>>>>> kept.
>>>>>>> One thing that we lack is some way to add charsets for specific
>>>>>>> platforms and this comes up with the IBM patches where they are
>>>>>>> looking to adding several additional IBM charsets. One starting
>>>>>>> point that we've touched on in several threads here is dropping
>>>>>>> the EBCDIC charsets from the main stream builds. Going there
>>>>>>> will need build support.
>>>>>> So build support for trivially adding specific charsets to specific
>>>>>> platforms? Both to java.base (for AIX) and jdk.charsets, I presume,
>>>>>> then?
>>>>>>
>>>>>> Can you expand on the issue of dropping ebcdic? What's the problem
>>>>>> that needs build support?
>>>>>>
>>>>>> /Magnus
>>>>>>>
>>>>>>>
>>>>>>> -Alan
>>>>
>>>
>
From takiguc at linux.vnet.ibm.com Tue Dec 4 15:21:12 2018
From: takiguc at linux.vnet.ibm.com (Ichiroh Takiguchi)
Date: Wed, 05 Dec 2018 00:21:12 +0900
Subject: RFR: 8212794 IBM-964 is required for AIX default charset
In-Reply-To: <35fcde78-4558-fdce-48cf-1ac80c3517b7@oracle.com>
References: <6e0506fa72311261d3b5923dd58cdb3c@linux.vnet.ibm.com>
<07f980b6bd352a9eff8f2d0d161f3f19@linux.vnet.ibm.com>
<74984761-7152-6026-42a5-fc60a6298a4b@oracle.com>
<260a71c0-31f8-7127-8627-b383ddd73b5b@oracle.com>
<6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
<510056368323d6e1d8b502722c7a325f@linux.vnet.ibm.com>
<235f5bb2-cd60-56bf-3539-cdee07febd53@oracle.com>
<643fe481-310f-d2a3-2156-8ada724e6d30@oracle.com>
<62845d4ddbbfd04433808577bb1b1c7e@linux.vnet.ibm.com>
<35fcde78-4558-fdce-48cf-1ac80c3517b7@oracle.com>
Message-ID:
Hello Roger.
Thank you for your suggestion.
Could you review the fix again ?
Bug: https://bugs.openjdk.java.net/browse/JDK-8212794
Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.04/
Thanks,
Ichiroh Takiguchi
On 2018-12-04 23:36, Roger Riggs wrote:
> Hi Ichiroh,
>
> On 12/03/2018 10:30 PM, Ichiroh Takiguchi wrote:
>> Hello Roger.
>>
>> Thank you for your suggestion.
>>
>>> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>>>
>>> ??? I think this is no longer needed since it only has imports.
>>> ??? By the way, the style is to import each specific class and
>>> avoid wild card imports.
>> "import sun.nio.cs.*;" is required because of
>> SimpleEUCEncoder.java.template.
>> SimpleEUCEncoder.java.template has conversion loop and IBM964 refers
>> it.
>> It means that,
>> * On AIX platform, SimpleEUCEncoder should be in sun.nio.cs package
>> * On non-AIX platform, SimpleEUCEncoder should be in sun.nio.cs.ext
>> package
>> I could not determine which package has SimpleEUCEncoder.
>> And same kind code is available on ISO2022_JP.java.
>> Please let me know if you know another way.
> I understand, it is because IBM33722 may or may not be in the same
> package as SimpleEUCEncoder.
> It is SimpleEUCEncoder that may be in a different package, not
> IBM33722.
>>
>>> TestIBMBugs:
>>> ? - Please use a style consistent with other methods in the class.
>>> ??? In this case spaces are needed around "{" and "}, and a space
>>> after "," comma.
>> I'll changed.
> 226-227:? add a space before "{" to have the same style as line 210.
>>
>>> ? - The new method bug8212794, includes a test for x-IBM33722.
>>> ??? Is that needed since there does not appear to be a change for
>>> 33722?
>> Yes, it's no need.
>>
>> Could you review the fix again ?
>> Bug:??? https://bugs.openjdk.java.net/browse/JDK-8212794
>> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.03/
>
> Thanks, looks fine.
>
> Regards, Roger
>
>>
>> Thanks,
>> Ichiroh Takiguchi
>>
>> On 2018-12-04 05:50, Roger Riggs wrote:
>>> Hi Ichiroh,
>>>
>>> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>>>
>>> ??? I think this is no longer needed since it only has imports.
>>> ??? By the way, the style is to import each specific class and
>>> avoid wild card imports.
>>>
>>> TestIBMBugs:
>>> ? - Please use a style consistent with other methods in the class.
>>> ??? In this case spaces are needed around "{" and "}, and a space
>>> after "," comma.
>>>
>>> ? - The new method bug8212794, includes a test for x-IBM33722.
>>> ??? Is that needed since there does not appear to be a change for
>>> 33722?
>>>
>>> Regards, Roger
>>>
>>>
>>> On 11/30/2018 09:58 AM, Magnus Ihse Bursie wrote:
>>>>
>>>>
>>>> On 2018-11-30 10:49, Ichiroh Takiguchi wrote:
>>>>> Hello.
>>>>>
>>>>> Could you review the fix again ?
>>>>>
>>>>> Bug:??? https://bugs.openjdk.java.net/browse/JDK-8212794
>>>>> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.02/
>>>> I think it looks good but please let someone from core-libs review
>>>> it too.
>>>>
>>>> /Magnus
>>>>>
>>>>> I just fixed only IBM964 for JDK-8212794.
>>>>> (IBM29626C fix is not included)
>>>>>
>>>>> On non AIX platform (Linux),
>>>>> ibm-euctw alias is added for IBM964.
>>>>>
>>>>> Without fix
>>>>> $ jshell
>>>>> |? Welcome to JShell -- Version 12-ea
>>>>> |? For an introduction type: /help intro
>>>>>
>>>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>>>> cs ==> x-IBM964
>>>>>
>>>>> jshell> cs.getClass().getName()
>>>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>>>
>>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>>> ibm-964
>>>>> cp964
>>>>> ibm964
>>>>> 964
>>>>>
>>>>> jshell> /exit
>>>>> |? Goodbye
>>>>> $
>>>>> ======
>>>>>
>>>>> With fix
>>>>> ======
>>>>> $ jshell
>>>>> |? Welcome to JShell -- Version 12-internal
>>>>> |? For an introduction type: /help intro
>>>>>
>>>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>>>> cs ==> x-IBM964
>>>>>
>>>>> jshell> cs.getClass().getName()
>>>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>>>
>>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>>> ibm-964
>>>>> cp964
>>>>> ibm-euctw
>>>>> ibm964
>>>>> 964
>>>>>
>>>>> jshell> /exit
>>>>> |? Goodbye
>>>>> $
>>>>> ======
>>>>>
>>>>> On AIX platform
>>>>> IBM964 is moved to java.base module from jdk.charset module.
>>>>>
>>>>> ======
>>>>> $ LANG=zh_TW jshell
>>>>> |? Welcome to JShell -- Version 12-internal
>>>>> |? For an introduction type: /help intro
>>>>>
>>>>> jshell> var cs = java.nio.charset.Charset.defaultCharset()
>>>>> cs ==> x-IBM964
>>>>>
>>>>> jshell> cs.getClass().getName()
>>>>> $2 ==> "sun.nio.cs.IBM964"
>>>>>
>>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>>> ibm-964
>>>>> cp964
>>>>> ibm-euctw
>>>>> ibm964
>>>>> 964
>>>>>
>>>>> jshell> /exit
>>>>> |? Goodbye
>>>>> $
>>>>> ======
>>>>>
>>>>> I'd like to obtain a sponsor for this issue.
>>>>>
>>>>> Thanks,
>>>>> Ichiroh Takiguchi
>>>>> IBM Japan, Ltd.
>>>>>
>>>>> On 2018-11-29 22:39, Ichiroh Takiguchi wrote:
>>>>>> Hello Alan & Magnus.
>>>>>>
>>>>>> Sorry for you confusion.
>>>>>> I did many copy actions and rename actions.
>>>>>> So you may see, I added unexpected code into non AIX platform.
>>>>>>
>>>>>> I think I should not put 2 kind of modification.
>>>>>>
>>>>>> For this bug id, I'll handle IBM964 and IBM33722.
>>>>>> (also SimpleEUCEncoder.java is required)
>>>>>>
>>>>>> I'll submit code review again.
>>>>>>
>>>>>> Additionally, I'll touch
>>>>>> make/data/charsetmapping/charsets
>>>>>> make/data/charsetmapping/stdcs-aix
>>>>>>
>>>>>> I'll not touch
>>>>>> make/jdk/src/classes/build/tools/charsetmapping/Main.java
>>>>>> make/jdk/src/classes/build/tools/charsetmapping/SRC.java
>>>>>>
>>>>>> My build machine is not so fast, after test is done.
>>>>>> I'll post new code.
>>>>>>
>>>>>> Thanks,
>>>>>> Ichiroh Takiguchi
>>>>>>
>>>>>> On 2018-11-28 19:10, Magnus Ihse Bursie wrote:
>>>>>>> On 2018-11-28 10:36, Alan Bateman wrote:
>>>>>>>> On 28/11/2018 09:28, Magnus Ihse Bursie wrote:
>>>>>>>>> I'm quite unsatisfied with the current handling of character
>>>>>>>>> sets in the build in general. :-( I'd really like to modernize
>>>>>>>>> it. I have a, slightly fuzzy, laundry list of things I want to
>>>>>>>>> fix from a build perspective, but I'm not sure of what
>>>>>>>>> "external" requirements are coming from AIX and the general
>>>>>>>>> core-libs agenda regarding character sets in general.
>>>>>>>>>
>>>>>>>>> I think there is a good opportunity to solve many problems at
>>>>>>>>> the same time here, as long as everyone agrees on what is the
>>>>>>>>> preferred outcome.
>>>>>>>> The support in the build to configure the charsets to include in
>>>>>>>> java.base on each platform has been working well. Charsets that
>>>>>>>> aren't in java.base go into the jdk.charsets service provider
>>>>>>>> module and that has been working well too. From the result point
>>>>>>>> of view, perhaps, but definitely not from the build perspective.
>>>>>>>> ;-) But yes, I understand this is functionality that should be
>>>>>>>> kept.
>>>>>>>> One thing that we lack is some way to add charsets for specific
>>>>>>>> platforms and this comes up with the IBM patches where they are
>>>>>>>> looking to adding several additional IBM charsets. One starting
>>>>>>>> point that we've touched on in several threads here is dropping
>>>>>>>> the EBCDIC charsets from the main stream builds. Going there
>>>>>>>> will need build support.
>>>>>>> So build support for trivially adding specific charsets to
>>>>>>> specific
>>>>>>> platforms? Both to java.base (for AIX) and jdk.charsets, I
>>>>>>> presume,
>>>>>>> then?
>>>>>>>
>>>>>>> Can you expand on the issue of dropping ebcdic? What's the
>>>>>>> problem
>>>>>>> that needs build support?
>>>>>>>
>>>>>>> /Magnus
>>>>>>>>
>>>>>>>>
>>>>>>>> -Alan
>>>>>
>>>>
>>
From Roger.Riggs at oracle.com Tue Dec 4 16:07:22 2018
From: Roger.Riggs at oracle.com (Roger Riggs)
Date: Tue, 4 Dec 2018 11:07:22 -0500
Subject: RFR: 8212794 IBM-964 is required for AIX default charset
In-Reply-To:
References: <6e0506fa72311261d3b5923dd58cdb3c@linux.vnet.ibm.com>
<07f980b6bd352a9eff8f2d0d161f3f19@linux.vnet.ibm.com>
<74984761-7152-6026-42a5-fc60a6298a4b@oracle.com>
<260a71c0-31f8-7127-8627-b383ddd73b5b@oracle.com>
<6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
<510056368323d6e1d8b502722c7a325f@linux.vnet.ibm.com>
<235f5bb2-cd60-56bf-3539-cdee07febd53@oracle.com>
<643fe481-310f-d2a3-2156-8ada724e6d30@oracle.com>
<62845d4ddbbfd04433808577bb1b1c7e@linux.vnet.ibm.com>
<35fcde78-4558-fdce-48cf-1ac80c3517b7@oracle.com>
Message-ID: <1c7e7226-7cda-f622-634a-77397467047d@oracle.com>
Hi Ichiroh,
Looks fine.
I can sponsor that for you.? Tomorrow, though, to allow time for any
other comments.
Thanks, Roger
On 12/04/2018 10:21 AM, Ichiroh Takiguchi wrote:
> Hello Roger.
>
> Thank you for your suggestion.
>
> Could you review the fix again ?
>
> Bug:??? https://bugs.openjdk.java.net/browse/JDK-8212794
> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.04/
>
> Thanks,
> Ichiroh Takiguchi
>
> On 2018-12-04 23:36, Roger Riggs wrote:
>> Hi Ichiroh,
>>
>> On 12/03/2018 10:30 PM, Ichiroh Takiguchi wrote:
>>> Hello Roger.
>>>
>>> Thank you for your suggestion.
>>>
>>>> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>>>>
>>>> ??? I think this is no longer needed since it only has imports.
>>>> ??? By the way, the style is to import each specific class and
>>>> avoid wild card imports.
>>> "import sun.nio.cs.*;" is required because of
>>> SimpleEUCEncoder.java.template.
>>> SimpleEUCEncoder.java.template has conversion loop and IBM964 refers
>>> it.
>>> It means that,
>>> * On AIX platform, SimpleEUCEncoder should be in sun.nio.cs package
>>> * On non-AIX platform, SimpleEUCEncoder should be in sun.nio.cs.ext
>>> package
>>> I could not determine which package has SimpleEUCEncoder.
>>> And same kind code is available on ISO2022_JP.java.
>>> Please let me know if you know another way.
>> I understand, it is because IBM33722 may or may not be in the same
>> package as SimpleEUCEncoder.
>> It is SimpleEUCEncoder that may be in a different package, not IBM33722.
>>>
>>>> TestIBMBugs:
>>>> ? - Please use a style consistent with other methods in the class.
>>>> ??? In this case spaces are needed around "{" and "}, and a space
>>>> after "," comma.
>>> I'll changed.
>> 226-227:? add a space before "{" to have the same style as line 210.
>>>
>>>> ? - The new method bug8212794, includes a test for x-IBM33722.
>>>> ??? Is that needed since there does not appear to be a change for
>>>> 33722?
>>> Yes, it's no need.
>>>
>>> Could you review the fix again ?
>>> Bug:??? https://bugs.openjdk.java.net/browse/JDK-8212794
>>> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.03/
>>
>> Thanks, looks fine.
>>
>> Regards, Roger
>>
>>>
>>> Thanks,
>>> Ichiroh Takiguchi
>>>
>>> On 2018-12-04 05:50, Roger Riggs wrote:
>>>> Hi Ichiroh,
>>>>
>>>> src/jdk.charsets/share/classes/sun/nio/cs/ext/IBM33722.java:
>>>>
>>>> ??? I think this is no longer needed since it only has imports.
>>>> ??? By the way, the style is to import each specific class and
>>>> avoid wild card imports.
>>>>
>>>> TestIBMBugs:
>>>> ? - Please use a style consistent with other methods in the class.
>>>> ??? In this case spaces are needed around "{" and "}, and a space
>>>> after "," comma.
>>>>
>>>> ? - The new method bug8212794, includes a test for x-IBM33722.
>>>> ??? Is that needed since there does not appear to be a change for
>>>> 33722?
>>>>
>>>> Regards, Roger
>>>>
>>>>
>>>> On 11/30/2018 09:58 AM, Magnus Ihse Bursie wrote:
>>>>>
>>>>>
>>>>> On 2018-11-30 10:49, Ichiroh Takiguchi wrote:
>>>>>> Hello.
>>>>>>
>>>>>> Could you review the fix again ?
>>>>>>
>>>>>> Bug:??? https://bugs.openjdk.java.net/browse/JDK-8212794
>>>>>> Change: https://cr.openjdk.java.net/~itakiguchi/8212794/webrev.02/
>>>>> I think it looks good but please let someone from core-libs review
>>>>> it too.
>>>>>
>>>>> /Magnus
>>>>>>
>>>>>> I just fixed only IBM964 for JDK-8212794.
>>>>>> (IBM29626C fix is not included)
>>>>>>
>>>>>> On non AIX platform (Linux),
>>>>>> ibm-euctw alias is added for IBM964.
>>>>>>
>>>>>> Without fix
>>>>>> $ jshell
>>>>>> |? Welcome to JShell -- Version 12-ea
>>>>>> |? For an introduction type: /help intro
>>>>>>
>>>>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>>>>> cs ==> x-IBM964
>>>>>>
>>>>>> jshell> cs.getClass().getName()
>>>>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>>>>
>>>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>>>> ibm-964
>>>>>> cp964
>>>>>> ibm964
>>>>>> 964
>>>>>>
>>>>>> jshell> /exit
>>>>>> |? Goodbye
>>>>>> $
>>>>>> ======
>>>>>>
>>>>>> With fix
>>>>>> ======
>>>>>> $ jshell
>>>>>> |? Welcome to JShell -- Version 12-internal
>>>>>> |? For an introduction type: /help intro
>>>>>>
>>>>>> jshell> var cs = java.nio.charset.Charset.forName("IBM964")
>>>>>> cs ==> x-IBM964
>>>>>>
>>>>>> jshell> cs.getClass().getName()
>>>>>> $2 ==> "sun.nio.cs.ext.IBM964"
>>>>>>
>>>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>>>> ibm-964
>>>>>> cp964
>>>>>> ibm-euctw
>>>>>> ibm964
>>>>>> 964
>>>>>>
>>>>>> jshell> /exit
>>>>>> |? Goodbye
>>>>>> $
>>>>>> ======
>>>>>>
>>>>>> On AIX platform
>>>>>> IBM964 is moved to java.base module from jdk.charset module.
>>>>>>
>>>>>> ======
>>>>>> $ LANG=zh_TW jshell
>>>>>> |? Welcome to JShell -- Version 12-internal
>>>>>> |? For an introduction type: /help intro
>>>>>>
>>>>>> jshell> var cs = java.nio.charset.Charset.defaultCharset()
>>>>>> cs ==> x-IBM964
>>>>>>
>>>>>> jshell> cs.getClass().getName()
>>>>>> $2 ==> "sun.nio.cs.IBM964"
>>>>>>
>>>>>> jshell> System.out.println(String.join("\n", cs.aliases()))
>>>>>> ibm-964
>>>>>> cp964
>>>>>> ibm-euctw
>>>>>> ibm964
>>>>>> 964
>>>>>>
>>>>>> jshell> /exit
>>>>>> |? Goodbye
>>>>>> $
>>>>>> ======
>>>>>>
>>>>>> I'd like to obtain a sponsor for this issue.
>>>>>>
>>>>>> Thanks,
>>>>>> Ichiroh Takiguchi
>>>>>> IBM Japan, Ltd.
>>>>>>
>>>>>> On 2018-11-29 22:39, Ichiroh Takiguchi wrote:
>>>>>>> Hello Alan & Magnus.
>>>>>>>
>>>>>>> Sorry for you confusion.
>>>>>>> I did many copy actions and rename actions.
>>>>>>> So you may see, I added unexpected code into non AIX platform.
>>>>>>>
>>>>>>> I think I should not put 2 kind of modification.
>>>>>>>
>>>>>>> For this bug id, I'll handle IBM964 and IBM33722.
>>>>>>> (also SimpleEUCEncoder.java is required)
>>>>>>>
>>>>>>> I'll submit code review again.
>>>>>>>
>>>>>>> Additionally, I'll touch
>>>>>>> make/data/charsetmapping/charsets
>>>>>>> make/data/charsetmapping/stdcs-aix
>>>>>>>
>>>>>>> I'll not touch
>>>>>>> make/jdk/src/classes/build/tools/charsetmapping/Main.java
>>>>>>> make/jdk/src/classes/build/tools/charsetmapping/SRC.java
>>>>>>>
>>>>>>> My build machine is not so fast, after test is done.
>>>>>>> I'll post new code.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Ichiroh Takiguchi
>>>>>>>
>>>>>>> On 2018-11-28 19:10, Magnus Ihse Bursie wrote:
>>>>>>>> On 2018-11-28 10:36, Alan Bateman wrote:
>>>>>>>>> On 28/11/2018 09:28, Magnus Ihse Bursie wrote:
>>>>>>>>>> I'm quite unsatisfied with the current handling of character
>>>>>>>>>> sets in the build in general. :-( I'd really like to
>>>>>>>>>> modernize it. I have a, slightly fuzzy, laundry list of
>>>>>>>>>> things I want to fix from a build perspective, but I'm not
>>>>>>>>>> sure of what "external" requirements are coming from AIX and
>>>>>>>>>> the general core-libs agenda regarding character sets in
>>>>>>>>>> general.
>>>>>>>>>>
>>>>>>>>>> I think there is a good opportunity to solve many problems at
>>>>>>>>>> the same time here, as long as everyone agrees on what is the
>>>>>>>>>> preferred outcome.
>>>>>>>>> The support in the build to configure the charsets to include
>>>>>>>>> in java.base on each platform has been working well. Charsets
>>>>>>>>> that aren't in java.base go into the jdk.charsets service
>>>>>>>>> provider module and that has been working well too. From the
>>>>>>>>> result point of view, perhaps, but definitely not from the
>>>>>>>>> build perspective. ;-) But yes, I understand this is
>>>>>>>>> functionality that should be kept.
>>>>>>>>> One thing that we lack is some way to add charsets for
>>>>>>>>> specific platforms and this comes up with the IBM patches
>>>>>>>>> where they are looking to adding several additional IBM
>>>>>>>>> charsets. One starting point that we've touched on in several
>>>>>>>>> threads here is dropping the EBCDIC charsets from the main
>>>>>>>>> stream builds. Going there will need build support.
>>>>>>>> So build support for trivially adding specific charsets to
>>>>>>>> specific
>>>>>>>> platforms? Both to java.base (for AIX) and jdk.charsets, I
>>>>>>>> presume,
>>>>>>>> then?
>>>>>>>>
>>>>>>>> Can you expand on the issue of dropping ebcdic? What's the problem
>>>>>>>> that needs build support?
>>>>>>>>
>>>>>>>> /Magnus
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> -Alan
>>>>>>
>>>>>
>>>
>
From Roger.Riggs at oracle.com Tue Dec 4 16:23:15 2018
From: Roger.Riggs at oracle.com (Roger Riggs)
Date: Tue, 4 Dec 2018 11:23:15 -0500
Subject: RFR 8214794 : java.specification.version should be only the major
version number
In-Reply-To: <826efc15-17b4-d4b8-9cb6-79bda360aa33@oracle.com>
References: <826efc15-17b4-d4b8-9cb6-79bda360aa33@oracle.com>
Message-ID: <47169a5a-8327-d126-68fa-0acaef8a7808@oracle.com>
Including build-dev for the change to GensrcMisc.gmk.
thx.
On 12/04/2018 11:16 AM, Roger Riggs wrote:
> Please review correctly setting the java.specification.version property
> with only the major version number.? A test is added to ensure the
> java spec version agrees with the major version.
>
> The symptoms are that jtreg would fail with a full version number.
>
> Webrev:
> ? http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-2/
>
> Thanks, Roger
>
>
From erik.joelsson at oracle.com Tue Dec 4 16:25:10 2018
From: erik.joelsson at oracle.com (Erik Joelsson)
Date: Tue, 4 Dec 2018 08:25:10 -0800
Subject: RFR: JDK-8214780 Create pandoc package for Windows
In-Reply-To: <4a71c7e3-7f0f-127d-784d-0fedeb62321b@oracle.com>
References: <4a71c7e3-7f0f-127d-784d-0fedeb62321b@oracle.com>
Message-ID: <3ad4c2b0-67fd-d68c-44f5-7abd3a06bb36@oracle.com>
Looks good.
/Erik
On 2018-12-04 04:34, Magnus Ihse Bursie wrote:
> As requested in JDK-8179917, we should create a jib package for pandoc
> on Windows.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8214780
> WebRev:
> http://cr.openjdk.java.net/~ihse/JDK-8214780-create-pandoc-package-for-windows/webrev.01
>
> /Magnus
>
From mandy.chung at oracle.com Tue Dec 4 18:41:19 2018
From: mandy.chung at oracle.com (Mandy Chung)
Date: Tue, 4 Dec 2018 10:41:19 -0800
Subject: RFR 8214794 : java.specification.version should be only the major
version number
In-Reply-To: <826efc15-17b4-d4b8-9cb6-79bda360aa33@oracle.com>
References: <826efc15-17b4-d4b8-9cb6-79bda360aa33@oracle.com>
Message-ID: <6ea5a2b8-e79c-a793-4618-efa9da9e462c@oracle.com>
On 12/4/18 8:16 AM, Roger Riggs wrote:
> Please review correctly setting the java.specification.version property
> with only the major version number.? A test is added to ensure the
> java spec version agrees with the major version.
>
> The symptoms are that jtreg would fail with a full version number.
>
> Webrev:
> ? http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-2/
>
Looks okay.?? I agree with Martin to go with a stronger assertion
without converting into a number.
test/jdk/java/lang/System/Versions.java looks like also covering this
test case.? At some point it'd be good to consolidate these two tests.
Nit:? in GensrcMisc.gmk, I think VERSION_NUMBER and VERSION_PRE etc are
a relevant group.?? VERSION_SPECIFICATION can be moved to group with
VERSION_CLASSFILE_MAJOR and MINOR.? Magnus may have an opinion.
Mandy
From brian.burkhalter at oracle.com Tue Dec 4 19:02:03 2018
From: brian.burkhalter at oracle.com (Brian Burkhalter)
Date: Tue, 4 Dec 2018 11:02:03 -0800
Subject: RFR 8214794 : java.specification.version should be only the major
version number
In-Reply-To: <47169a5a-8327-d126-68fa-0acaef8a7808@oracle.com>
References: <826efc15-17b4-d4b8-9cb6-79bda360aa33@oracle.com>
<47169a5a-8327-d126-68fa-0acaef8a7808@oracle.com>
Message-ID: <5A631884-5824-459C-9AE0-49CD175C80BE@oracle.com>
Hi Roger,
Looks fine.
Brian
> On Dec 4, 2018, at 8:23 AM, Roger Riggs wrote:
>
> Including build-dev for the change to GensrcMisc.gmk.
>
> thx.
>
> On 12/04/2018 11:16 AM, Roger Riggs wrote:
>> Please review correctly setting the java.specification.version property
>> with only the major version number. A test is added to ensure the
>> java spec version agrees with the major version.
>>
>> The symptoms are that jtreg would fail with a full version number.
>>
>> Webrev:
>> http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-2
From mandy.chung at oracle.com Tue Dec 4 19:34:06 2018
From: mandy.chung at oracle.com (Mandy Chung)
Date: Tue, 4 Dec 2018 11:34:06 -0800
Subject: RFR 8214794 : java.specification.version should be only the major
version number
In-Reply-To:
References: <826efc15-17b4-d4b8-9cb6-79bda360aa33@oracle.com>
<6ea5a2b8-e79c-a793-4618-efa9da9e462c@oracle.com>
Message-ID: <58ff1ee9-69c6-e739-ec73-126ae7a94767@oracle.com>
The revised webrev looks okay.
Mandy
On 12/4/18 11:32 AM, Roger Riggs wrote:
> Hi Mandy, Martin,
>
> The new test is unnecessary, the case is covered by
> java/lang/System/Versions test
> and uses the stronger comparison for the version numbers.
>
> It would not detect the problem unless the version included more than
> the major version.
>
> Webrev: http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-3/
>
> Thanks, Roger
>
> On 12/04/2018 01:41 PM, Mandy Chung wrote:
>>
>>
>> On 12/4/18 8:16 AM, Roger Riggs wrote:
>>> Please review correctly setting the java.specification.version property
>>> with only the major version number.? A test is added to ensure the
>>> java spec version agrees with the major version.
>>>
>>> The symptoms are that jtreg would fail with a full version number.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-2/
>>>
>>
>> Looks okay.?? I agree with Martin to go with a stronger assertion
>> without converting into a number.
>> test/jdk/java/lang/System/Versions.java looks like also covering this
>> test case.? At some point it'd be good to consolidate these two tests.
>>
>> Nit:? in GensrcMisc.gmk, I think VERSION_NUMBER and VERSION_PRE etc
>> are a relevant group.?? VERSION_SPECIFICATION can be moved to group
>> with VERSION_CLASSFILE_MAJOR and MINOR.? Magnus may have an opinion.
>>
>> Mandy
>
From Roger.Riggs at oracle.com Tue Dec 4 19:32:00 2018
From: Roger.Riggs at oracle.com (Roger Riggs)
Date: Tue, 4 Dec 2018 14:32:00 -0500
Subject: RFR 8214794 : java.specification.version should be only the major
version number
In-Reply-To: <6ea5a2b8-e79c-a793-4618-efa9da9e462c@oracle.com>
References: <826efc15-17b4-d4b8-9cb6-79bda360aa33@oracle.com>
<6ea5a2b8-e79c-a793-4618-efa9da9e462c@oracle.com>
Message-ID:
Hi Mandy, Martin,
The new test is unnecessary, the case is covered by
java/lang/System/Versions test
and uses the stronger comparison for the version numbers.
It would not detect the problem unless the version included more than
the major version.
Webrev: http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-3/
Thanks, Roger
On 12/04/2018 01:41 PM, Mandy Chung wrote:
>
>
> On 12/4/18 8:16 AM, Roger Riggs wrote:
>> Please review correctly setting the java.specification.version property
>> with only the major version number.? A test is added to ensure the
>> java spec version agrees with the major version.
>>
>> The symptoms are that jtreg would fail with a full version number.
>>
>> Webrev:
>> http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-2/
>>
>
> Looks okay.?? I agree with Martin to go with a stronger assertion
> without converting into a number.
> test/jdk/java/lang/System/Versions.java looks like also covering this
> test case.? At some point it'd be good to consolidate these two tests.
>
> Nit:? in GensrcMisc.gmk, I think VERSION_NUMBER and VERSION_PRE etc
> are a relevant group.?? VERSION_SPECIFICATION can be moved to group
> with VERSION_CLASSFILE_MAJOR and MINOR.? Magnus may have an opinion.
>
> Mandy
From leonid.mesnik at oracle.com Tue Dec 4 20:03:14 2018
From: leonid.mesnik at oracle.com (Leonid Mesnik)
Date: Tue, 4 Dec 2018 12:03:14 -0800
Subject: RFR (round 5), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To: <8c267450-9ca8-79a6-0e4a-39b3b68af2e3@redhat.com>
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
<8c267450-9ca8-79a6-0e4a-39b3b68af2e3@redhat.com>
Message-ID: <5788143E-E206-4795-B7B8-B47FDDF3B54F@oracle.com>
Hi
The shared tests changes looks good for me. Thank you for fixing and testing different combinations.
Leonid
> On Dec 3, 2018, at 11:10 PM, Roman Kennke wrote:
>
> Round 5 of Shenandoah review includes:
> - A fix for the @requires tag in TestFullGCCountTest.java. It should be
> correct now. We believe the CMS @requires was also not quite right and
> fixed it the same.
>
> It reads now: Don't run this test if:
> - Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
> true, as set by harness
> - Actual GC set by harness is Shenandoah *and*
> ExplicitGCInvokesConcurrent is not set false by harness (it's true by
> default in Shenandoah, so this needs to be double-inverteed).
>
> The @requires for CMS was wrong before (we think), because it would also
> filter defaultGC + ExplicitGCInvokesConcurrent.
>
> - Sorting of macros was fixed, as was pointed out by Per
> - Some stuff was added to SA, as suggested by Jini
> - Rebased on most current jdk/jdk code
>
> Webrevs:
> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
>
> I also need reviews from GC reviewers for the CSR:
> https://bugs.openjdk.java.net/browse/JDK-8214349
>
> I already got reviews for:
> [x] shared-runtime (coleenp)
> [x] shared-compiler (kvn)
>
> I got reviews for shared-build, but an earlier version, so maybe makes
> sense to look over this again. Erik J, Magnus?
>
> I still need approvals for:
> [ ] shared-build (kvn, erikj, ihse, pliden)
> [ ] shared-gc (pliden, kbarrett)
> [ ] shared-serviceability (jgeorge, pliden)
> [ ] shared-tests (lmesnik, pliden)
> [ ] shenandoah-gc
> [ ] shenandoah-tests
>
>
> Thanks for your patience and ongoing support!
>
> Cheers,
> Roman
>
>
>> Hi all,
>>
>> here comes round 4 of Shenandoah upstreaming review:
>>
>> This includes fixes for the issues that Per brought up:
>> - Verify and gracefully reject dangerous flags combinations that
>> disables required barriers
>> - Revisited @requires filters in tests
>> - Trim unused code from Shenandoah's SA impl
>> - Move ShenandoahGCTracer to gc/shenandoah
>> - Fix ordering of GC names in various files
>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>>
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>
>> Thanks everybody for taking time to review this!
>> Roman
>>
>>> Hello all,
>>>
>>> Thanks so far for all the reviews and support!
>>>
>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>>
>>> Things we've changed today:
>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>> requires an addition in build machinery though, see
>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>> - Improved zero-disabling and build-code-simplification as suggested by
>>> Magnus and Per
>>> - Cleaned up some leftovers in C2
>>> - Improved C2 loop opts code by introducing another APIs in
>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards now.
>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>>> that.
>>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>>> - Rebased on jdk-12+22
>>>
>>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>>
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>
>>> Thanks,
>>> Roman
>>>
>>>> Alright, we fixed:
>>>> - The minor issues that Kim reported in shared-gc
>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>
>>>> Some notes:
>>>> Leonid: test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>> correct. The @requires there means to exclude runs with both CMS and
>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>
>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>
>>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>>> those with ZGC?
>>>>
>>>> See:
>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>
>>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>>> next round).
>>>>
>>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>>> better. I can tell that we're not done with C2 yet. Can you look over
>>>> the code and see what is ok, and especially what is not ok, so that we
>>>> can focus our efforts on the relevant parts?
>>>>
>>>> Updated set of webrevs:
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>
>>>> Thanks,
>>>> Roman
>>>>
>>>>
>>>>> Hi,
>>>>>
>>>>> This is the first round of changes for including Shenandoah GC into
>>>>> mainline.
>>>>> I divided the review into parts that roughly correspond to the mailing lists
>>>>> that would normally review it, and I divided it into 'shared' code
>>>>> changes and
>>>>> 'shenandoah' code changes (actually, mostly additions). The intend is to
>>>>> eventually
>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>
>>>>> JEP:
>>>>> https://openjdk.java.net/jeps/189
>>>>> Bug entry:
>>>>>
>>>>> https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>
>>>>> Webrevs:
>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>
>>>>> For those who want to see the full change, have a look at the
>>>>> shenandoah-complete
>>>>>
>>>>> directory,
>>>>> it contains the full combined webrev. Alternatively, there is the file
>>>>> shenandoah-master.patch
>>>>> ,
>>>>> which is what I intend to commit (and which should be equivalent to the
>>>>> 'shenandoah-complete' webrev).
>>>>>
>>>>> Sections to review (at this point) are the following:
>>>>> *) shenandoah-gc
>>>>>
>>>>> - Actual Shenandoah implementation, almost completely residing in
>>>>> gc/shenandoah
>>>>>
>>>>> *) shared-gc
>>>>>
>>>>> - This is mostly boilerplate that is common to any GC
>>>>> - referenceProcessor.cpp has a little change to make one assert not
>>>>> fail (next to CMS and G1)
>>>>> - taskqueue.hpp has some small adjustments to enable subclassing
>>>>>
>>>>> *) shared-serviceability
>>>>>
>>>>> - The usual code to support another GC
>>>>>
>>>>> *) shared-runtime
>>>>>
>>>>> - A number of friends declarations to allow Shenandoah iterators to
>>>>> hook up with,
>>>>> e.g. ClassLoaderData, CodeCache, etc
>>>>> - Warning and disabling JFR LeakProfiler
>>>>> - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>> Shenandoah C2 optimizations
>>>>> - Locks initialization in mutexLocker.cpp as usual
>>>>> - VM operations defines for Shenandoah's VM ops
>>>>> - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>> Shenandoah's logging
>>>>> - The usual macros in macro.hpp
>>>>>
>>>>> *) shared-build
>>>>>
>>>>> - Add shenandoah feature, enabled by default, as agreed with
>>>>> Vladimir K. beforehand
>>>>> - Some flags for shenandoah-enabled compilation to get
>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>> and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>> Shenandoah's barriers
>>>>> - --param inline-unit-growth=1000 settings for 2 shenandoah source
>>>>> files, which is
>>>>> useful to get the whole marking loop inlined (observed significant
>>>>> regression if we
>>>>> don't)
>>>>>
>>>>> *) shared-tests
>>>>>
>>>>> - Test infrastructure to support Shenandoah
>>>>> - Shenandoah test groups
>>>>> - Exclude Shenandoah in various tests that can be run with selected GC
>>>>> - Enable/add configure for Shenandoah for tests that make sense to
>>>>> run with it
>>>>>
>>>>> *) shenandoah-tests
>>>>>
>>>>> - Shenandoah specific tests, most reside in gc/shenandoah subdirectory
>>>>> - A couple of tests configurations have been added, e.g.
>>>>> TestGCBasherWithShenandoah.java
>>>>>
>>>>> I intentionally left out shared-compiler for now, because we have some
>>>>> work left to do
>>>>> there, but if you click around you'll find the patch anyway, in case you
>>>>> want to take
>>>>> a peek at it.
>>>>>
>>>>> We have regular builds on:
>>>>> - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>> - {Windows} x {x86_64},
>>>>> - {MacOS X} x {x86_64}
>>>>>
>>>>> This also routinely passes:
>>>>> - the new Shenandoah tests
>>>>> - jcstress with/without aggressive Shenandoah verification
>>>>> - specjvm2008 with/without aggressive Shenandoah verification
>>>>>
>>>>>
>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she deserves
>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>>> teams for tirelessly helping with and reviewing all the GC interface and
>>>>> related changes, and of course the many early adopters for reporting
>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>> without any of you!
>>>>>
>>>>> Best regards,
>>>>> Roman
>>>>>
>>>>
>>>
>>
>
From rkennke at redhat.com Tue Dec 4 20:37:49 2018
From: rkennke at redhat.com (Roman Kennke)
Date: Tue, 4 Dec 2018 21:37:49 +0100
Subject: RFR (round 5), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To: <5788143E-E206-4795-B7B8-B47FDDF3B54F@oracle.com>
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
<8c267450-9ca8-79a6-0e4a-39b3b68af2e3@redhat.com>
<5788143E-E206-4795-B7B8-B47FDDF3B54F@oracle.com>
Message-ID:
Thanks, Leonid, for reviewing!
Roman
> Hi
>
> The shared tests changes looks good for me. Thank you for fixing and testing different combinations.
>
> Leonid
>
>> On Dec 3, 2018, at 11:10 PM, Roman Kennke wrote:
>>
>> Round 5 of Shenandoah review includes:
>> - A fix for the @requires tag in TestFullGCCountTest.java. It should be
>> correct now. We believe the CMS @requires was also not quite right and
>> fixed it the same.
>>
>> It reads now: Don't run this test if:
>> - Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
>> true, as set by harness
>> - Actual GC set by harness is Shenandoah *and*
>> ExplicitGCInvokesConcurrent is not set false by harness (it's true by
>> default in Shenandoah, so this needs to be double-inverteed).
>>
>> The @requires for CMS was wrong before (we think), because it would also
>> filter defaultGC + ExplicitGCInvokesConcurrent.
>>
>> - Sorting of macros was fixed, as was pointed out by Per
>> - Some stuff was added to SA, as suggested by Jini
>> - Rebased on most current jdk/jdk code
>>
>> Webrevs:
>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
>>
>> I also need reviews from GC reviewers for the CSR:
>> https://bugs.openjdk.java.net/browse/JDK-8214349
>>
>> I already got reviews for:
>> [x] shared-runtime (coleenp)
>> [x] shared-compiler (kvn)
>>
>> I got reviews for shared-build, but an earlier version, so maybe makes
>> sense to look over this again. Erik J, Magnus?
>>
>> I still need approvals for:
>> [ ] shared-build (kvn, erikj, ihse, pliden)
>> [ ] shared-gc (pliden, kbarrett)
>> [ ] shared-serviceability (jgeorge, pliden)
>> [ ] shared-tests (lmesnik, pliden)
>> [ ] shenandoah-gc
>> [ ] shenandoah-tests
>>
>>
>> Thanks for your patience and ongoing support!
>>
>> Cheers,
>> Roman
>>
>>
>>> Hi all,
>>>
>>> here comes round 4 of Shenandoah upstreaming review:
>>>
>>> This includes fixes for the issues that Per brought up:
>>> - Verify and gracefully reject dangerous flags combinations that
>>> disables required barriers
>>> - Revisited @requires filters in tests
>>> - Trim unused code from Shenandoah's SA impl
>>> - Move ShenandoahGCTracer to gc/shenandoah
>>> - Fix ordering of GC names in various files
>>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>>>
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>>
>>> Thanks everybody for taking time to review this!
>>> Roman
>>>
>>>> Hello all,
>>>>
>>>> Thanks so far for all the reviews and support!
>>>>
>>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>>>
>>>> Things we've changed today:
>>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>>> requires an addition in build machinery though, see
>>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>>> - Improved zero-disabling and build-code-simplification as suggested by
>>>> Magnus and Per
>>>> - Cleaned up some leftovers in C2
>>>> - Improved C2 loop opts code by introducing another APIs in
>>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards now.
>>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>>>> that.
>>>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>>>> - Rebased on jdk-12+22
>>>>
>>>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>>>
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>>
>>>> Thanks,
>>>> Roman
>>>>
>>>>> Alright, we fixed:
>>>>> - The minor issues that Kim reported in shared-gc
>>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>>
>>>>> Some notes:
>>>>> Leonid: test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>>> correct. The @requires there means to exclude runs with both CMS and
>>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>>
>>>>> See:
>>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>>
>>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>>
>>>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>>>> those with ZGC?
>>>>>
>>>>> See:
>>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>>
>>>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>>>> next round).
>>>>>
>>>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>>>> better. I can tell that we're not done with C2 yet. Can you look over
>>>>> the code and see what is ok, and especially what is not ok, so that we
>>>>> can focus our efforts on the relevant parts?
>>>>>
>>>>> Updated set of webrevs:
>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>>
>>>>> Thanks,
>>>>> Roman
>>>>>
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> This is the first round of changes for including Shenandoah GC into
>>>>>> mainline.
>>>>>> I divided the review into parts that roughly correspond to the mailing lists
>>>>>> that would normally review it, and I divided it into 'shared' code
>>>>>> changes and
>>>>>> 'shenandoah' code changes (actually, mostly additions). The intend is to
>>>>>> eventually
>>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>>
>>>>>> JEP:
>>>>>> https://openjdk.java.net/jeps/189
>>>>>> Bug entry:
>>>>>>
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>>
>>>>>> Webrevs:
>>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>>
>>>>>> For those who want to see the full change, have a look at the
>>>>>> shenandoah-complete
>>>>>>
>>>>>> directory,
>>>>>> it contains the full combined webrev. Alternatively, there is the file
>>>>>> shenandoah-master.patch
>>>>>> ,
>>>>>> which is what I intend to commit (and which should be equivalent to the
>>>>>> 'shenandoah-complete' webrev).
>>>>>>
>>>>>> Sections to review (at this point) are the following:
>>>>>> *) shenandoah-gc
>>>>>>
>>>>>> - Actual Shenandoah implementation, almost completely residing in
>>>>>> gc/shenandoah
>>>>>>
>>>>>> *) shared-gc
>>>>>>
>>>>>> - This is mostly boilerplate that is common to any GC
>>>>>> - referenceProcessor.cpp has a little change to make one assert not
>>>>>> fail (next to CMS and G1)
>>>>>> - taskqueue.hpp has some small adjustments to enable subclassing
>>>>>>
>>>>>> *) shared-serviceability
>>>>>>
>>>>>> - The usual code to support another GC
>>>>>>
>>>>>> *) shared-runtime
>>>>>>
>>>>>> - A number of friends declarations to allow Shenandoah iterators to
>>>>>> hook up with,
>>>>>> e.g. ClassLoaderData, CodeCache, etc
>>>>>> - Warning and disabling JFR LeakProfiler
>>>>>> - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>>> Shenandoah C2 optimizations
>>>>>> - Locks initialization in mutexLocker.cpp as usual
>>>>>> - VM operations defines for Shenandoah's VM ops
>>>>>> - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>>> Shenandoah's logging
>>>>>> - The usual macros in macro.hpp
>>>>>>
>>>>>> *) shared-build
>>>>>>
>>>>>> - Add shenandoah feature, enabled by default, as agreed with
>>>>>> Vladimir K. beforehand
>>>>>> - Some flags for shenandoah-enabled compilation to get
>>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>>> and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>>> Shenandoah's barriers
>>>>>> - --param inline-unit-growth=1000 settings for 2 shenandoah source
>>>>>> files, which is
>>>>>> useful to get the whole marking loop inlined (observed significant
>>>>>> regression if we
>>>>>> don't)
>>>>>>
>>>>>> *) shared-tests
>>>>>>
>>>>>> - Test infrastructure to support Shenandoah
>>>>>> - Shenandoah test groups
>>>>>> - Exclude Shenandoah in various tests that can be run with selected GC
>>>>>> - Enable/add configure for Shenandoah for tests that make sense to
>>>>>> run with it
>>>>>>
>>>>>> *) shenandoah-tests
>>>>>>
>>>>>> - Shenandoah specific tests, most reside in gc/shenandoah subdirectory
>>>>>> - A couple of tests configurations have been added, e.g.
>>>>>> TestGCBasherWithShenandoah.java
>>>>>>
>>>>>> I intentionally left out shared-compiler for now, because we have some
>>>>>> work left to do
>>>>>> there, but if you click around you'll find the patch anyway, in case you
>>>>>> want to take
>>>>>> a peek at it.
>>>>>>
>>>>>> We have regular builds on:
>>>>>> - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>>> - {Windows} x {x86_64},
>>>>>> - {MacOS X} x {x86_64}
>>>>>>
>>>>>> This also routinely passes:
>>>>>> - the new Shenandoah tests
>>>>>> - jcstress with/without aggressive Shenandoah verification
>>>>>> - specjvm2008 with/without aggressive Shenandoah verification
>>>>>>
>>>>>>
>>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she deserves
>>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>>>> teams for tirelessly helping with and reviewing all the GC interface and
>>>>>> related changes, and of course the many early adopters for reporting
>>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>>> without any of you!
>>>>>>
>>>>>> Best regards,
>>>>>> Roman
>>>>>>
>>>>>
>>>>
>>>
>>
>
From erik.joelsson at oracle.com Tue Dec 4 20:40:10 2018
From: erik.joelsson at oracle.com (Erik Joelsson)
Date: Tue, 4 Dec 2018 12:40:10 -0800
Subject: RFR 8214794 : java.specification.version should be only the major
version number
In-Reply-To:
References: <826efc15-17b4-d4b8-9cb6-79bda360aa33@oracle.com>
<6ea5a2b8-e79c-a793-4618-efa9da9e462c@oracle.com>
Message-ID: <9d26387b-bd51-7824-1749-189ff5f0e6cd@oracle.com>
Looks good.
/Erik
On 2018-12-04 11:32, Roger Riggs wrote:
> Hi Mandy, Martin,
>
> The new test is unnecessary, the case is covered by
> java/lang/System/Versions test
> and uses the stronger comparison for the version numbers.
>
> It would not detect the problem unless the version included more than
> the major version.
>
> Webrev: http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-3/
>
> Thanks, Roger
>
> On 12/04/2018 01:41 PM, Mandy Chung wrote:
>>
>>
>> On 12/4/18 8:16 AM, Roger Riggs wrote:
>>> Please review correctly setting the java.specification.version property
>>> with only the major version number.? A test is added to ensure the
>>> java spec version agrees with the major version.
>>>
>>> The symptoms are that jtreg would fail with a full version number.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-2/
>>>
>>
>> Looks okay.?? I agree with Martin to go with a stronger assertion
>> without converting into a number.
>> test/jdk/java/lang/System/Versions.java looks like also covering this
>> test case.? At some point it'd be good to consolidate these two tests.
>>
>> Nit:? in GensrcMisc.gmk, I think VERSION_NUMBER and VERSION_PRE etc
>> are a relevant group.?? VERSION_SPECIFICATION can be moved to group
>> with VERSION_CLASSFILE_MAJOR and MINOR.? Magnus may have an opinion.
>>
>> Mandy
>
From martinrb at google.com Tue Dec 4 20:43:43 2018
From: martinrb at google.com (Martin Buchholz)
Date: Tue, 4 Dec 2018 12:43:43 -0800
Subject: RFR 8214794 : java.specification.version should be only the major
version number
In-Reply-To:
References: <826efc15-17b4-d4b8-9cb6-79bda360aa33@oracle.com>
<6ea5a2b8-e79c-a793-4618-efa9da9e462c@oracle.com>
Message-ID:
>
> LGTM
From magnus.ihse.bursie at oracle.com Tue Dec 4 23:46:49 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Wed, 5 Dec 2018 00:46:49 +0100
Subject: RFR 8214794 : java.specification.version should be only the major
version number
In-Reply-To: <58ff1ee9-69c6-e739-ec73-126ae7a94767@oracle.com>
References: <826efc15-17b4-d4b8-9cb6-79bda360aa33@oracle.com>
<6ea5a2b8-e79c-a793-4618-efa9da9e462c@oracle.com>
<58ff1ee9-69c6-e739-ec73-126ae7a94767@oracle.com>
Message-ID: <5453A6E3-EF47-4C7C-A562-129A37B547F0@oracle.com>
Looks good to me, too.
/Magnus
> 4 dec. 2018 kl. 20:34 skrev Mandy Chung :
>
> The revised webrev looks okay.
>
> Mandy
>
>> On 12/4/18 11:32 AM, Roger Riggs wrote:
>> Hi Mandy, Martin,
>>
>> The new test is unnecessary, the case is covered by java/lang/System/Versions test
>> and uses the stronger comparison for the version numbers.
>>
>> It would not detect the problem unless the version included more than the major version.
>>
>> Webrev: http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-3/
>>
>> Thanks, Roger
>>
>>> On 12/04/2018 01:41 PM, Mandy Chung wrote:
>>>
>>>
>>>> On 12/4/18 8:16 AM, Roger Riggs wrote:
>>>> Please review correctly setting the java.specification.version property
>>>> with only the major version number. A test is added to ensure the
>>>> java spec version agrees with the major version.
>>>>
>>>> The symptoms are that jtreg would fail with a full version number.
>>>>
>>>> Webrev:
>>>> http://cr.openjdk.java.net/~rriggs/webrev-spec-ver-8214700-2/
>>>>
>>>
>>> Looks okay. I agree with Martin to go with a stronger assertion without converting into a number. test/jdk/java/lang/System/Versions.java looks like also covering this test case. At some point it'd be good to consolidate these two tests.
>>>
>>> Nit: in GensrcMisc.gmk, I think VERSION_NUMBER and VERSION_PRE etc are a relevant group. VERSION_SPECIFICATION can be moved to group with VERSION_CLASSFILE_MAJOR and MINOR. Magnus may have an opinion.
>>>
>>> Mandy
>>
>
From david.holmes at oracle.com Wed Dec 5 00:31:35 2018
From: david.holmes at oracle.com (David Holmes)
Date: Wed, 5 Dec 2018 10:31:35 +1000
Subject: bootcycle builds x86_64-linux-gnu?
In-Reply-To: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
References: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
Message-ID: <31cf8b15-4fc4-6f37-aa93-563961c5b427@oracle.com>
On 4/12/2018 11:24 pm, Matthias Klose wrote:
> with jdk-12+22, bootcycle builds fail at least on x86_64-linux-gnu. Is there
> some place where I can check if this kind of build succeeds for others?
They don't fail for us, we run them regularly.
Cheers,
David
> thanks, Matthias
>
From magnus.ihse.bursie at oracle.com Wed Dec 5 14:41:02 2018
From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie)
Date: Wed, 5 Dec 2018 15:41:02 +0100
Subject: RFR: JDK-8214780 Create pandoc package for Windows
In-Reply-To: <4a71c7e3-7f0f-127d-784d-0fedeb62321b@oracle.com>
References: <4a71c7e3-7f0f-127d-784d-0fedeb62321b@oracle.com>
Message-ID: <67bcb031-983c-be0f-31cb-2eeeac375e73@oracle.com>
It turned out this did not work in Cygwin, since the exe file did not
have the executable permission set. And this was preserved by tar.
Adding a chmod helped.
New webrev:
http://cr.openjdk.java.net/~ihse/JDK-8214780-create-pandoc-package-for-windows/webrev.02
/Magnus
On 2018-12-04 13:34, Magnus Ihse Bursie wrote:
> As requested in JDK-8179917, we should create a jib package for pandoc
> on Windows.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8214780
> WebRev:
> http://cr.openjdk.java.net/~ihse/JDK-8214780-create-pandoc-package-for-windows/webrev.01
>
> /Magnus
>
From erik.joelsson at oracle.com Wed Dec 5 16:35:39 2018
From: erik.joelsson at oracle.com (Erik Joelsson)
Date: Wed, 5 Dec 2018 08:35:39 -0800
Subject: RFR: JDK-8214780 Create pandoc package for Windows
In-Reply-To: <67bcb031-983c-be0f-31cb-2eeeac375e73@oracle.com>
References: <4a71c7e3-7f0f-127d-784d-0fedeb62321b@oracle.com>
<67bcb031-983c-be0f-31cb-2eeeac375e73@oracle.com>
Message-ID: <6c0bc4dd-1c07-74e2-577d-2b833cc5c212@oracle.com>
Looks good.
/Erik
On 2018-12-05 06:41, Magnus Ihse Bursie wrote:
> It turned out this did not work in Cygwin, since the exe file did not
> have the executable permission set. And this was preserved by tar.
> Adding a chmod helped.
>
> New webrev:
> http://cr.openjdk.java.net/~ihse/JDK-8214780-create-pandoc-package-for-windows/webrev.02
>
> /Magnus
>
> On 2018-12-04 13:34, Magnus Ihse Bursie wrote:
>> As requested in JDK-8179917, we should create a jib package for
>> pandoc on Windows.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8214780
>> WebRev:
>> http://cr.openjdk.java.net/~ihse/JDK-8214780-create-pandoc-package-for-windows/webrev.01
>>
>> /Magnus
>>
>
From joe.darcy at oracle.com Wed Dec 5 17:28:42 2018
From: joe.darcy at oracle.com (joe darcy)
Date: Wed, 5 Dec 2018 09:28:42 -0800
Subject: JDK 13 RFR of JDK-8205626: Start of release updates for JDK 13
Message-ID:
Hello,
With the inception of JDK 13 right around the corner, please review the
build-related changes of the update:
??? http://cr.openjdk.java.net/~darcy/jdk13-fork.2
As usual, javac defines a new -source/-target 13 which is used in the
build of the libraries. A new class file version is defined and the
feature version is updated.
Other aspects of the changes will be reviewed on other mailing lists,
compiler-dev, etc.
Thanks,
-Joe
From erik.joelsson at oracle.com Wed Dec 5 17:56:41 2018
From: erik.joelsson at oracle.com (Erik Joelsson)
Date: Wed, 5 Dec 2018 09:56:41 -0800
Subject: JDK 13 RFR of JDK-8205626: Start of release updates for JDK 13
In-Reply-To:
References:
Message-ID: <6d126781-e4f2-393e-2530-633fa71cbae4@oracle.com>
I think jaxp and nashorn TEST.ROOT will also need to be updated.
Otherwise build changes look good.
/Erik
On 2018-12-05 09:28, joe darcy wrote:
> Hello,
>
> With the inception of JDK 13 right around the corner, please review
> the build-related changes of the update:
>
> ??? http://cr.openjdk.java.net/~darcy/jdk13-fork.2
>
> As usual, javac defines a new -source/-target 13 which is used in the
> build of the libraries. A new class file version is defined and the
> feature version is updated.
>
> Other aspects of the changes will be reviewed on other mailing lists,
> compiler-dev, etc.
>
> Thanks,
>
> -Joe
>
From joe.darcy at oracle.com Wed Dec 5 18:29:25 2018
From: joe.darcy at oracle.com (joe darcy)
Date: Wed, 5 Dec 2018 10:29:25 -0800
Subject: JDK 13 RFR of JDK-8205626: Start of release updates for JDK 13
In-Reply-To: <6d126781-e4f2-393e-2530-633fa71cbae4@oracle.com>
References:
<6d126781-e4f2-393e-2530-633fa71cbae4@oracle.com>
Message-ID: <4b5cc5b9-3b62-5362-a447-e0ac5fd1b8f2@oracle.com>
Hi Erik,
Noted; I'll update the other TEST.ROOT files in the next iteration and
before this is pushed.
Thanks for the review,
-Joe
On 12/5/2018 9:56 AM, Erik Joelsson wrote:
> I think jaxp and nashorn TEST.ROOT will also need to be updated.
> Otherwise build changes look good.
>
> /Erik
>
> On 2018-12-05 09:28, joe darcy wrote:
>> Hello,
>>
>> With the inception of JDK 13 right around the corner, please review
>> the build-related changes of the update:
>>
>> ??? http://cr.openjdk.java.net/~darcy/jdk13-fork.2
>>
>> As usual, javac defines a new -source/-target 13 which is used in the
>> build of the libraries. A new class file version is defined and the
>> feature version is updated.
>>
>> Other aspects of the changes will be reviewed on other mailing lists,
>> compiler-dev, etc.
>>
>> Thanks,
>>
>> -Joe
>>
From Alan.Bateman at oracle.com Wed Dec 5 18:53:43 2018
From: Alan.Bateman at oracle.com (Alan Bateman)
Date: Wed, 5 Dec 2018 18:53:43 +0000
Subject: JDK 13 RFR of JDK-8205626: Start of release updates for JDK 13
In-Reply-To:
References:
Message-ID: <98a5219c-ab6f-a182-e587-061e6d66fb56@oracle.com>
On 05/12/2018 17:28, joe darcy wrote:
> Hello,
>
> With the inception of JDK 13 right around the corner, please review
> the build-related changes of the update:
>
> ??? http://cr.openjdk.java.net/~darcy/jdk13-fork.2
>
> As usual, javac defines a new -source/-target 13 which is used in the
> build of the libraries. A new class file version is defined and the
> feature version is updated.
The changes looks good to me.
-Alan
From mandy.chung at oracle.com Wed Dec 5 19:40:53 2018
From: mandy.chung at oracle.com (Mandy Chung)
Date: Wed, 5 Dec 2018 11:40:53 -0800
Subject: JDK 13 RFR of JDK-8205626: Start of release updates for JDK 13
In-Reply-To:
References:
Message-ID: <1412cb5b-c108-1279-80c6-f03344fdc9f4@oracle.com>
Looks good.
Mandy
On 12/5/18 9:28 AM, joe darcy wrote:
> Hello,
>
> With the inception of JDK 13 right around the corner, please review
> the build-related changes of the update:
>
> ??? http://cr.openjdk.java.net/~darcy/jdk13-fork.2
>
> As usual, javac defines a new -source/-target 13 which is used in the
> build of the libraries. A new class file version is defined and the
> feature version is updated.
>
> Other aspects of the changes will be reviewed on other mailing lists,
> compiler-dev, etc.
>
> Thanks,
>
> -Joe
>
From takiguc at linux.vnet.ibm.com Thu Dec 6 10:56:25 2018
From: takiguc at linux.vnet.ibm.com (Ichiroh Takiguchi)
Date: Thu, 06 Dec 2018 19:56:25 +0900
Subject: RFR: 8212794 IBM-964 and IBM-29626C are required for AIX default
charset
In-Reply-To: <6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
References: <6e0506fa72311261d3b5923dd58cdb3c@linux.vnet.ibm.com>
<07f980b6bd352a9eff8f2d0d161f3f19@linux.vnet.ibm.com>
<74984761-7152-6026-42a5-fc60a6298a4b@oracle.com>
<260a71c0-31f8-7127-8627-b383ddd73b5b@oracle.com>
<6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
Message-ID: <40eac4cde890ddde70eb24846aff2c83@linux.vnet.ibm.com>
Hello.
Could you review the fix ?
Bug: https://bugs.openjdk.java.net/browse/JDK-8214533
Change: https://cr.openjdk.java.net/~itakiguchi/8214533/webrev.00/
IBM29626C charset is required for AIX default charset.
Java cannot start because of java/lang/ExceptionInInitializerError on
AIX ja_JP locale.
To build team,
I'd like to change following charsetmapping tool.
* make/jdk/src/classes/build/tools/charsetmapping/Main.java
* make/jdk/src/classes/build/tools/charsetmapping/SPI.java
* make/jdk/src/classes/build/tools/charsetmapping/SRC.java
build.tools.charsetmapping,Main supports "os" tag, but it seems it's not
used.
Currently, "os" supports "windows" or "unix".
I extended "os" tag's feature.
If "os aix" is there, this charset is only added into AIX platform.
(I assume "type template" should be used)
"aix" comes from "stdcs-aix" file name.
======
charset x-IBM29626C IBM29626C
package sun.nio.cs.ext
type template
os aix <=====
alias cp29626C # JDK historical
alias ibm29626C
alias ibm-29626C
alias 29626C
alias ibm-eucjp
======
If cs.os is null,
this charset is stored into gensrc directory.
Charset name is added into StandardCharsets.java or
ExtendedCharsets.java
If cs.os is "false",
this charset is NOT stored into gensrc directory.
Charset name is NOT added into StandardCharsets.java or
ExtendedCharsets.java
"os" tag supports multiple entries by using ",", like "aix,linux"
Then we can store new charset into
src/jdk.charsets/share/classes/sun/nio/cs/ext/ directory
$ locale charmap
IBM-eucJP
$ jshell
| JShell -- 12-internal
| : /help intro
jshell> var cs = java.nio.charset.Charset.defaultCharset()
cs ==> x-IBM29626C
jshell> cs.getClass().getName()
$2 ==> "sun.nio.cs.IBM29626C"
jshell> System.out.println(String.join("\n", cs.aliases()))
cp29626C
ibm-29626C
ibm-eucjp
ibm29626C
29626C
jshell> /exit
|
$
I tested Linux and Windows build.
======
$ grep 29626 build.log
IBM29626C, x-IBM29626C, null, sun.nio.cs.ext, template false
$ find support/gensrc/ | grep 29626
$ find support/gensrc/ | grep Charsets
support/gensrc/java.base/sun/nio/cs/StandardCharsets.java
support/gensrc/jdk.charsets/sun/nio/cs/ext/ExtendedCharsets.java
$ find support/gensrc/ | grep Charsets | xargs grep 29626
$
======
I'd like to obtain a sponsor for this issue.
Thanks,
Ichiroh Takiguchi
IBM Japan, Ltd.
On 2018-11-28 19:10, Magnus Ihse Bursie wrote:
> On 2018-11-28 10:36, Alan Bateman wrote:
>> On 28/11/2018 09:28, Magnus Ihse Bursie wrote:
>>> I'm quite unsatisfied with the current handling of character sets in
>>> the build in general. :-( I'd really like to modernize it. I have a,
>>> slightly fuzzy, laundry list of things I want to fix from a build
>>> perspective, but I'm not sure of what "external" requirements are
>>> coming from AIX and the general core-libs agenda regarding character
>>> sets in general.
>>>
>>> I think there is a good opportunity to solve many problems at the
>>> same time here, as long as everyone agrees on what is the preferred
>>> outcome.
>> The support in the build to configure the charsets to include in
>> java.base on each platform has been working well. Charsets that aren't
>> in java.base go into the jdk.charsets service provider module and that
>> has been working well too. From the result point of view, perhaps, but
>> definitely not from the build perspective. ;-) But yes, I understand
>> this is functionality that should be kept.
>> One thing that we lack is some way to add charsets for specific
>> platforms and this comes up with the IBM patches where they are
>> looking to adding several additional IBM charsets. One starting point
>> that we've touched on in several threads here is dropping the EBCDIC
>> charsets from the main stream builds. Going there will need build
>> support.
> So build support for trivially adding specific charsets to specific
> platforms? Both to java.base (for AIX) and jdk.charsets, I presume,
> then?
>
> Can you expand on the issue of dropping ebcdic? What's the problem
> that needs build support?
>
> /Magnus
>>
>>
>> -Alan
From coleen.phillimore at oracle.com Thu Dec 6 13:47:53 2018
From: coleen.phillimore at oracle.com (coleen.phillimore at oracle.com)
Date: Thu, 6 Dec 2018 08:47:53 -0500
Subject: RFR (round 5), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To:
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
<8c267450-9ca8-79a6-0e4a-39b3b68af2e3@redhat.com>
<5788143E-E206-4795-B7B8-B47FDDF3B54F@oracle.com>
Message-ID: <496b3ac5-defc-92b6-7339-64c88c2e2dfa@oracle.com>
http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/shenandoah-gc/src/hotspot/share/gc/shenandoah/vm_operations_shenandoah.cpp.html
Can you rename these to shenandoahVMOperations.hpp/cpp to match the
newly agreed upon naming convention for this?
See 8214791: Consistently name gc files containing VM operations [Was:
Re: RFR (S): 8214791: Rename vm_operations_g1* files to g1VMOperations*]
thanks,
Coleen
On 12/4/18 3:37 PM, Roman Kennke wrote:
> Thanks, Leonid, for reviewing!
>
> Roman
>
>
>> Hi
>>
>> The shared tests changes looks good for me. Thank you for fixing and testing different combinations.
>>
>> Leonid
>>
>>> On Dec 3, 2018, at 11:10 PM, Roman Kennke wrote:
>>>
>>> Round 5 of Shenandoah review includes:
>>> - A fix for the @requires tag in TestFullGCCountTest.java. It should be
>>> correct now. We believe the CMS @requires was also not quite right and
>>> fixed it the same.
>>>
>>> It reads now: Don't run this test if:
>>> - Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
>>> true, as set by harness
>>> - Actual GC set by harness is Shenandoah *and*
>>> ExplicitGCInvokesConcurrent is not set false by harness (it's true by
>>> default in Shenandoah, so this needs to be double-inverteed).
>>>
>>> The @requires for CMS was wrong before (we think), because it would also
>>> filter defaultGC + ExplicitGCInvokesConcurrent.
>>>
>>> - Sorting of macros was fixed, as was pointed out by Per
>>> - Some stuff was added to SA, as suggested by Jini
>>> - Rebased on most current jdk/jdk code
>>>
>>> Webrevs:
>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
>>>
>>> I also need reviews from GC reviewers for the CSR:
>>> https://bugs.openjdk.java.net/browse/JDK-8214349
>>>
>>> I already got reviews for:
>>> [x] shared-runtime (coleenp)
>>> [x] shared-compiler (kvn)
>>>
>>> I got reviews for shared-build, but an earlier version, so maybe makes
>>> sense to look over this again. Erik J, Magnus?
>>>
>>> I still need approvals for:
>>> [ ] shared-build (kvn, erikj, ihse, pliden)
>>> [ ] shared-gc (pliden, kbarrett)
>>> [ ] shared-serviceability (jgeorge, pliden)
>>> [ ] shared-tests (lmesnik, pliden)
>>> [ ] shenandoah-gc
>>> [ ] shenandoah-tests
>>>
>>>
>>> Thanks for your patience and ongoing support!
>>>
>>> Cheers,
>>> Roman
>>>
>>>
>>>> Hi all,
>>>>
>>>> here comes round 4 of Shenandoah upstreaming review:
>>>>
>>>> This includes fixes for the issues that Per brought up:
>>>> - Verify and gracefully reject dangerous flags combinations that
>>>> disables required barriers
>>>> - Revisited @requires filters in tests
>>>> - Trim unused code from Shenandoah's SA impl
>>>> - Move ShenandoahGCTracer to gc/shenandoah
>>>> - Fix ordering of GC names in various files
>>>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>>>>
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>>>
>>>> Thanks everybody for taking time to review this!
>>>> Roman
>>>>
>>>>> Hello all,
>>>>>
>>>>> Thanks so far for all the reviews and support!
>>>>>
>>>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>>>> Also, I fixed the numbering of my webrevs to match the review-round. ;-)
>>>>>
>>>>> Things we've changed today:
>>>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>>>> requires an addition in build machinery though, see
>>>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>>>> - Improved zero-disabling and build-code-simplification as suggested by
>>>>> Magnus and Per
>>>>> - Cleaned up some leftovers in C2
>>>>> - Improved C2 loop opts code by introducing another APIs in
>>>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC guards now.
>>>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>>>> noted earlier. This stuff is Shenandoah-specific, so let's just call it
>>>>> that.
>>>>> - Rehashed Shenandoah tests (formatting, naming, directory layout, etc)
>>>>> - Rebased on jdk-12+22
>>>>>
>>>>> - Question: let us know if you need separate RFE for the new BSC2 APIs?
>>>>>
>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>>>
>>>>> Thanks,
>>>>> Roman
>>>>>
>>>>>> Alright, we fixed:
>>>>>> - The minor issues that Kim reported in shared-gc
>>>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>>>
>>>>>> Some notes:
>>>>>> Leonid: test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>>>> correct. The @requires there means to exclude runs with both CMS and
>>>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>>>> (expectedly) failing. It can run CMS, default GC and any other GC just
>>>>>> fine. Adding the same clause for Shenandoah means the same, and filters
>>>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>>>
>>>>>> See:
>>>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>>>
>>>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>>>> - test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>>>
>>>>>> we filter them for Shenandoah now. I'm wondering: how do you get past
>>>>>> those with ZGC?
>>>>>>
>>>>>> See:
>>>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>>>
>>>>>> (Note to Leonid and tests reviewers: I'll add those related filters in
>>>>>> next round).
>>>>>>
>>>>>> Vladimir: Roland integrated a bunch of changes to make loop* code look
>>>>>> better. I can tell that we're not done with C2 yet. Can you look over
>>>>>> the code and see what is ok, and especially what is not ok, so that we
>>>>>> can focus our efforts on the relevant parts?
>>>>>>
>>>>>> Updated set of webrevs:
>>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>>>
>>>>>> Thanks,
>>>>>> Roman
>>>>>>
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> This is the first round of changes for including Shenandoah GC into
>>>>>>> mainline.
>>>>>>> I divided the review into parts that roughly correspond to the mailing lists
>>>>>>> that would normally review it, and I divided it into 'shared' code
>>>>>>> changes and
>>>>>>> 'shenandoah' code changes (actually, mostly additions). The intend is to
>>>>>>> eventually
>>>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>>>
>>>>>>> JEP:
>>>>>>> https://openjdk.java.net/jeps/189
>>>>>>> Bug entry:
>>>>>>>
>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>>>
>>>>>>> Webrevs:
>>>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>>>
>>>>>>> For those who want to see the full change, have a look at the
>>>>>>> shenandoah-complete
>>>>>>>
>>>>>>> directory,
>>>>>>> it contains the full combined webrev. Alternatively, there is the file
>>>>>>> shenandoah-master.patch
>>>>>>> ,
>>>>>>> which is what I intend to commit (and which should be equivalent to the
>>>>>>> 'shenandoah-complete' webrev).
>>>>>>>
>>>>>>> Sections to review (at this point) are the following:
>>>>>>> *) shenandoah-gc
>>>>>>>
>>>>>>> - Actual Shenandoah implementation, almost completely residing in
>>>>>>> gc/shenandoah
>>>>>>>
>>>>>>> *) shared-gc
>>>>>>>
>>>>>>> - This is mostly boilerplate that is common to any GC
>>>>>>> - referenceProcessor.cpp has a little change to make one assert not
>>>>>>> fail (next to CMS and G1)
>>>>>>> - taskqueue.hpp has some small adjustments to enable subclassing
>>>>>>>
>>>>>>> *) shared-serviceability
>>>>>>>
>>>>>>> - The usual code to support another GC
>>>>>>>
>>>>>>> *) shared-runtime
>>>>>>>
>>>>>>> - A number of friends declarations to allow Shenandoah iterators to
>>>>>>> hook up with,
>>>>>>> e.g. ClassLoaderData, CodeCache, etc
>>>>>>> - Warning and disabling JFR LeakProfiler
>>>>>>> - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>>>> Shenandoah C2 optimizations
>>>>>>> - Locks initialization in mutexLocker.cpp as usual
>>>>>>> - VM operations defines for Shenandoah's VM ops
>>>>>>> - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>>>> Shenandoah's logging
>>>>>>> - The usual macros in macro.hpp
>>>>>>>
>>>>>>> *) shared-build
>>>>>>>
>>>>>>> - Add shenandoah feature, enabled by default, as agreed with
>>>>>>> Vladimir K. beforehand
>>>>>>> - Some flags for shenandoah-enabled compilation to get
>>>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>>>> and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>>>> Shenandoah's barriers
>>>>>>> - --param inline-unit-growth=1000 settings for 2 shenandoah source
>>>>>>> files, which is
>>>>>>> useful to get the whole marking loop inlined (observed significant
>>>>>>> regression if we
>>>>>>> don't)
>>>>>>>
>>>>>>> *) shared-tests
>>>>>>>
>>>>>>> - Test infrastructure to support Shenandoah
>>>>>>> - Shenandoah test groups
>>>>>>> - Exclude Shenandoah in various tests that can be run with selected GC
>>>>>>> - Enable/add configure for Shenandoah for tests that make sense to
>>>>>>> run with it
>>>>>>>
>>>>>>> *) shenandoah-tests
>>>>>>>
>>>>>>> - Shenandoah specific tests, most reside in gc/shenandoah subdirectory
>>>>>>> - A couple of tests configurations have been added, e.g.
>>>>>>> TestGCBasherWithShenandoah.java
>>>>>>>
>>>>>>> I intentionally left out shared-compiler for now, because we have some
>>>>>>> work left to do
>>>>>>> there, but if you click around you'll find the patch anyway, in case you
>>>>>>> want to take
>>>>>>> a peek at it.
>>>>>>>
>>>>>>> We have regular builds on:
>>>>>>> - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>>>> - {Windows} x {x86_64},
>>>>>>> - {MacOS X} x {x86_64}
>>>>>>>
>>>>>>> This also routinely passes:
>>>>>>> - the new Shenandoah tests
>>>>>>> - jcstress with/without aggressive Shenandoah verification
>>>>>>> - specjvm2008 with/without aggressive Shenandoah verification
>>>>>>>
>>>>>>>
>>>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she deserves
>>>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>>>> contributions, everybody else in Red Hat's OpenJDK team for testing,
>>>>>>> advice and support, my collegues in Oracle's GC, runtime and compiler
>>>>>>> teams for tirelessly helping with and reviewing all the GC interface and
>>>>>>> related changes, and of course the many early adopters for reporting
>>>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>>>> without any of you!
>>>>>>>
>>>>>>> Best regards,
>>>>>>> Roman
>>>>>>>
From rkennke at redhat.com Thu Dec 6 14:36:24 2018
From: rkennke at redhat.com (Roman Kennke)
Date: Thu, 6 Dec 2018 15:36:24 +0100
Subject: RFR (round 5), JDK-8214259: Implementation: JEP 189: Shenandoah:
A Low-Pause Garbage Collector
In-Reply-To: <496b3ac5-defc-92b6-7339-64c88c2e2dfa@oracle.com>
References: <9ff4171e-9827-8710-554a-b84da309277a@redhat.com>
<914ae8db-c7d6-4d14-541b-f49d670d2ffb@redhat.com>
<0f7aa868-5862-47da-9d1c-98ee70036e72@redhat.com>
<02c58732-e421-6eb2-d21f-50e56b5d665f@redhat.com>
<8c267450-9ca8-79a6-0e4a-39b3b68af2e3@redhat.com>
<5788143E-E206-4795-B7B8-B47FDDF3B54F@oracle.com>
<496b3ac5-defc-92b6-7339-64c88c2e2dfa@oracle.com>
Message-ID: <73e720e4-251c-aa06-418b-3fc8409e7cf6@redhat.com>
Hi Coleen,
> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/shenandoah-gc/src/hotspot/share/gc/shenandoah/vm_operations_shenandoah.cpp.html
>
>
> Can you rename these to shenandoahVMOperations.hpp/cpp to match the
> newly agreed upon naming convention for this?
>
> See 8214791: Consistently name gc files containing VM operations [Was:
> Re: RFR (S): 8214791: Rename vm_operations_g1* files to g1VMOperations*]
Doing so:
http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-December/008595.html
I will integrate this in next round of webrevs.
I expect the next will be the final round of webrevs. I got positive
reviews for all shared-* parts, I'm waiting for shenandoah-* reviews
from Shenandoah devs, plus Zhengyu+Thomas' TaskQueue stuff to arrive in
upstream jdk. The CSR for Shenandoah flags has been approved, and the
JEP should be moved to targeted JDK12 ~tomorrow. I intend/expect to push
Shenandoah during the next couple of days, unless somebody speaks up
until then :-)
Thanks,
Roman
>
> thanks,
> Coleen
>
> On 12/4/18 3:37 PM, Roman Kennke wrote:
>> Thanks, Leonid, for reviewing!
>>
>> Roman
>>
>>
>>> Hi
>>>
>>> The shared tests changes looks good for me. Thank you for fixing and
>>> testing different combinations.
>>>
>>> Leonid
>>>
>>>> On Dec 3, 2018, at 11:10 PM, Roman Kennke wrote:
>>>>
>>>> Round 5 of Shenandoah review includes:
>>>> - A fix for the @requires tag in TestFullGCCountTest.java. It should be
>>>> correct now. We believe the CMS @requires was also not quite right and
>>>> fixed it the same.
>>>>
>>>> It reads now: Don't run this test if:
>>>> - Actual GC set by harness is CMS *and* ExplicitGCInvokesConcurrent is
>>>> true, as set by harness
>>>> - Actual GC set by harness is Shenandoah *and*
>>>> ExplicitGCInvokesConcurrent is not set false by harness (it's true by
>>>> default in Shenandoah, so this needs to be double-inverteed).
>>>>
>>>> The @requires for CMS was wrong before (we think), because it would
>>>> also
>>>> filter defaultGC + ExplicitGCInvokesConcurrent.
>>>>
>>>> - Sorting of macros was fixed, as was pointed out by Per
>>>> - Some stuff was added to SA, as suggested by Jini
>>>> - Rebased on most current jdk/jdk code
>>>>
>>>> Webrevs:
>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/05/
>>>>
>>>> I also need reviews from GC reviewers for the CSR:
>>>> https://bugs.openjdk.java.net/browse/JDK-8214349
>>>>
>>>> I already got reviews for:
>>>> [x] shared-runtime (coleenp)
>>>> [x] shared-compiler (kvn)
>>>>
>>>> I got reviews for shared-build, but an earlier version, so maybe makes
>>>> sense to look over this again. Erik J, Magnus?
>>>>
>>>> I still need approvals for:
>>>> [ ] shared-build????????? (kvn, erikj, ihse, pliden)
>>>> [ ] shared-gc???????????? (pliden, kbarrett)
>>>> [ ] shared-serviceability (jgeorge, pliden)
>>>> [ ] shared-tests????????? (lmesnik, pliden)
>>>> [ ] shenandoah-gc
>>>> [ ] shenandoah-tests
>>>>
>>>>
>>>> Thanks for your patience and ongoing support!
>>>>
>>>> Cheers,
>>>> Roman
>>>>
>>>>
>>>>> Hi all,
>>>>>
>>>>> here comes round 4 of Shenandoah upstreaming review:
>>>>>
>>>>> This includes fixes for the issues that Per brought up:
>>>>> - Verify and gracefully reject dangerous flags combinations that
>>>>> disables required barriers
>>>>> - Revisited @requires filters in tests
>>>>> - Trim unused code from Shenandoah's SA impl
>>>>> - Move ShenandoahGCTracer to gc/shenandoah
>>>>> - Fix ordering of GC names in various files
>>>>> - Rename UINT64_FORMAT_HEX_W to UINT64_FORMAT_X_W
>>>>>
>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/04/
>>>>>
>>>>> Thanks everybody for taking time to review this!
>>>>> Roman
>>>>>
>>>>>> Hello all,
>>>>>>
>>>>>> Thanks so far for all the reviews and support!
>>>>>>
>>>>>> I forgot to update the 'round' yesterday. We are in round 3 now :-)
>>>>>> Also, I fixed the numbering of my webrevs to match the
>>>>>> review-round. ;-)
>>>>>>
>>>>>> Things we've changed today:
>>>>>> - We moved shenandoah-specific code out of .ad files into our own .ad
>>>>>> files under gc/shenandoah (in shenandoah-gc), how cool is that? This
>>>>>> requires an addition in build machinery though, see
>>>>>> make/hotspot/gensrc/GensrcAdlc.gmk (in shared-build).
>>>>>> - Improved zero-disabling and build-code-simplification as
>>>>>> suggested by
>>>>>> Magnus and Per
>>>>>> - Cleaned up some leftovers in C2
>>>>>> - Improved C2 loop opts code by introducing another APIs in
>>>>>> BarrierSetC2. See the new APIs in shared-gc under BarrierSetC2.hpp.
>>>>>> - I don't see where it makes sense to put INCLUDE_SHENANDOAHGC
>>>>>> guards now.
>>>>>> - We would all very much prefer to keep ShenandoahXYZNode names, as
>>>>>> noted earlier. This stuff is Shenandoah-specific, so let's just
>>>>>> call it
>>>>>> that.
>>>>>> - Rehashed Shenandoah tests (formatting, naming, directory layout,
>>>>>> etc)
>>>>>> - Rebased on jdk-12+22
>>>>>>
>>>>>> - Question: let us know if you need separate RFE for the new BSC2
>>>>>> APIs?
>>>>>>
>>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/03/
>>>>>>
>>>>>> Thanks,
>>>>>> Roman
>>>>>>
>>>>>>> Alright, we fixed:
>>>>>>> - The minor issues that Kim reported in shared-gc
>>>>>>> - A lot of fixes in shared-tests according to Leonid's review
>>>>>>> - Disabled SA heapdumping similar to ZGC as Per suggested
>>>>>>>
>>>>>>> Some notes:
>>>>>>> Leonid:? test/hotspot/jtreg/gc/TestFullGCCount.java was actually
>>>>>>> correct. The @requires there means to exclude runs with both CMS and
>>>>>>> ExplicitGCInvokesConcurrent at the same time, because that would be
>>>>>>> (expectedly) failing. It can run CMS, default GC and any other GC
>>>>>>> just
>>>>>>> fine. Adding the same clause for Shenandoah means the same, and
>>>>>>> filters
>>>>>>> the combination (+UseShenandoahGC)+(+ExplicitGCInvokesConcurrent). I
>>>>>>> made the condition a bit clearer by avoiding triple-negation.
>>>>>>>
>>>>>>> See:
>>>>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008457.html
>>>>>>>
>>>>>>>
>>>>>>> Per: Disabling the SA part for heapdumping makes 2 tests fail:
>>>>>>> - test/hotspot/jtreg/serviceability/sa/ClhsdbJhisto.java
>>>>>>> -
>>>>>>> test/hotspot/jtreg/serviceability/sa/TestHeapDumpForLargeArray.java
>>>>>>>
>>>>>>> we filter them for Shenandoah now. I'm wondering: how do you get
>>>>>>> past
>>>>>>> those with ZGC?
>>>>>>>
>>>>>>> See:
>>>>>>> http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-November/008466.html
>>>>>>>
>>>>>>>
>>>>>>> (Note to Leonid and tests reviewers: I'll add those related
>>>>>>> filters in
>>>>>>> next round).
>>>>>>>
>>>>>>> Vladimir: Roland integrated a bunch of changes to make loop* code
>>>>>>> look
>>>>>>> better. I can tell that we're not done with C2 yet. Can you look
>>>>>>> over
>>>>>>> the code and see what is ok, and especially what is not ok, so
>>>>>>> that we
>>>>>>> can focus our efforts on the relevant parts?
>>>>>>>
>>>>>>> Updated set of webrevs:
>>>>>>> http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/01/
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Roman
>>>>>>>
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> This is the first round of changes for including Shenandoah GC into
>>>>>>>> mainline.
>>>>>>>> I divided the review into parts that roughly correspond to the
>>>>>>>> mailing lists
>>>>>>>> that would normally review it, and I divided it into 'shared' code
>>>>>>>> changes and
>>>>>>>> 'shenandoah' code changes (actually, mostly additions). The
>>>>>>>> intend is to
>>>>>>>> eventually
>>>>>>>> push them as single 'combined' changeset, once reviewed.
>>>>>>>>
>>>>>>>> JEP:
>>>>>>>> ?? https://openjdk.java.net/jeps/189
>>>>>>>> Bug entry:
>>>>>>>>
>>>>>>>> ? https://bugs.openjdk.java.net/browse/JDK-8214259
>>>>>>>>
>>>>>>>> Webrevs:
>>>>>>>> ?? http://cr.openjdk.java.net/~rkennke/shenandoah-upstream/00/
>>>>>>>>
>>>>>>>> For those who want to see the full change, have a look at the
>>>>>>>> shenandoah-complete
>>>>>>>>
>>>>>>>>
>>>>>>>> directory,
>>>>>>>> it contains the full combined webrev. Alternatively, there is
>>>>>>>> the file
>>>>>>>> shenandoah-master.patch
>>>>>>>> ,
>>>>>>>>
>>>>>>>> which is what I intend to commit (and which should be equivalent
>>>>>>>> to the
>>>>>>>> 'shenandoah-complete' webrev).
>>>>>>>>
>>>>>>>> Sections to review (at this point) are the following:
>>>>>>>> ? *) shenandoah-gc
>>>>>>>>
>>>>>>>>
>>>>>>>> ???? - Actual Shenandoah implementation, almost completely
>>>>>>>> residing in
>>>>>>>> gc/shenandoah
>>>>>>>>
>>>>>>>> ? *) shared-gc
>>>>>>>>
>>>>>>>>
>>>>>>>> ???? - This is mostly boilerplate that is common to any GC
>>>>>>>> ???? - referenceProcessor.cpp has a little change to make one
>>>>>>>> assert not
>>>>>>>> fail (next to CMS and G1)
>>>>>>>> ???? - taskqueue.hpp has some small adjustments to enable
>>>>>>>> subclassing
>>>>>>>>
>>>>>>>> ? *) shared-serviceability
>>>>>>>>
>>>>>>>>
>>>>>>>> ???? - The usual code to support another GC
>>>>>>>>
>>>>>>>> ? *) shared-runtime
>>>>>>>>
>>>>>>>>
>>>>>>>> ???? - A number of friends declarations to allow Shenandoah
>>>>>>>> iterators to
>>>>>>>> hook up with,
>>>>>>>> ?????? e.g. ClassLoaderData, CodeCache, etc
>>>>>>>> ???? - Warning and disabling JFR LeakProfiler
>>>>>>>> ???? - fieldDescriptor.hpp added is_stable() accessor, for use in
>>>>>>>> Shenandoah C2 optimizations
>>>>>>>> ???? - Locks initialization in mutexLocker.cpp as usual
>>>>>>>> ???? - VM operations defines for Shenandoah's VM ops
>>>>>>>> ???? - globalDefinitions.hpp added UINT64_FORMAT_HEX_W for use in
>>>>>>>> Shenandoah's logging
>>>>>>>> ???? - The usual macros in macro.hpp
>>>>>>>>
>>>>>>>> ? *) shared-build
>>>>>>>>
>>>>>>>>
>>>>>>>> ???? - Add shenandoah feature, enabled by default, as agreed with
>>>>>>>> Vladimir K. beforehand
>>>>>>>> ???? - Some flags for shenandoah-enabled compilation to get
>>>>>>>> SUPPORT_BARRIER_ON_PRIMITIVES
>>>>>>>> ?????? and SUPPORT_NOT_TO_SPACE_INVARIANT which is required for
>>>>>>>> Shenandoah's barriers
>>>>>>>> ???? - --param inline-unit-growth=1000 settings for 2 shenandoah
>>>>>>>> source
>>>>>>>> files, which is
>>>>>>>> ?????? useful to get the whole marking loop inlined (observed
>>>>>>>> significant
>>>>>>>> regression if we
>>>>>>>> ?????? don't)
>>>>>>>>
>>>>>>>> ? *) shared-tests
>>>>>>>>
>>>>>>>>
>>>>>>>> ???? - Test infrastructure to support Shenandoah
>>>>>>>> ???? - Shenandoah test groups
>>>>>>>> ???? - Exclude Shenandoah in various tests that can be run with
>>>>>>>> selected GC
>>>>>>>> ???? - Enable/add configure for Shenandoah for tests that make
>>>>>>>> sense to
>>>>>>>> run with it
>>>>>>>>
>>>>>>>> ? *) shenandoah-tests
>>>>>>>>
>>>>>>>>
>>>>>>>> ???? - Shenandoah specific tests, most reside in gc/shenandoah
>>>>>>>> subdirectory
>>>>>>>> ???? - A couple of tests configurations have been added, e.g.
>>>>>>>> TestGCBasherWithShenandoah.java
>>>>>>>>
>>>>>>>> I intentionally left out shared-compiler for now, because we
>>>>>>>> have some
>>>>>>>> work left to do
>>>>>>>> there, but if you click around you'll find the patch anyway, in
>>>>>>>> case you
>>>>>>>> want to take
>>>>>>>> a peek at it.
>>>>>>>>
>>>>>>>> We have regular builds on:
>>>>>>>> ?? - {Linux} x {x86_64, x86_32, armhf, aarch64, ppc64el, s390x}
>>>>>>>> ?? - {Windows} x {x86_64},
>>>>>>>> ?? - {MacOS X} x {x86_64}
>>>>>>>>
>>>>>>>> This also routinely passes:
>>>>>>>> ?? - the new Shenandoah tests
>>>>>>>> ?? - jcstress with/without aggressive Shenandoah verification
>>>>>>>> ?? - specjvm2008 with/without aggressive Shenandoah verification
>>>>>>>>
>>>>>>>>
>>>>>>>> I'd like to thank my collegues at Red Hat: Christine Flood, she
>>>>>>>> deserves
>>>>>>>> the credit for being the original inventor of Shenandoah, Aleksey
>>>>>>>> Shipl?v, Roland Westrelin & Zhengyu Gu for their countless
>>>>>>>> contributions, everybody else in Red Hat's OpenJDK team for
>>>>>>>> testing,
>>>>>>>> advice and support, my collegues in Oracle's GC, runtime and
>>>>>>>> compiler
>>>>>>>> teams for tirelessly helping with and reviewing all the GC
>>>>>>>> interface and
>>>>>>>> related changes, and of course the many early adopters for
>>>>>>>> reporting
>>>>>>>> bugs and success stories and feature requests: we wouldn't be here
>>>>>>>> without any of you!
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>> Roman
>>>>>>>>
>
From doko at ubuntu.com Thu Dec 6 15:34:01 2018
From: doko at ubuntu.com (Matthias Klose)
Date: Thu, 6 Dec 2018 16:34:01 +0100
Subject: bootcycle builds x86_64-linux-gnu?
In-Reply-To:
References: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
Message-ID:
On 04.12.18 14:54, Aleksey Shipilev wrote:
> On 12/4/18 2:24 PM, Matthias Klose wrote:
>> with jdk-12+22, bootcycle builds fail at least on x86_64-linux-gnu. Is there
>> some place where I can check if this kind of build succeeds for others?
>
> Just did this on jdk/jdk tip, and it passed:
>
> $ CONF=linux-x86_64-server-fastdebug make bootcycle-images
> ...
> Creating CDS archive for jdk image
> Stopping sjavac server
> Finished building target 'product-images' in configuration 'linux-x86_64-server-fastdebug'
> Finished building target 'bootcycle-images' in configuration 'linux-x86_64-server-fastdebug'
my bad, that happens in the test-image target:
In the build log I see:
FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jdk
FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/langtools
FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/nashorn
FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jaxp
make[5]: Leaving directory '/home/packages/openjdk/12/openjdk-12-12~23'
make/Main.gmk:1087: *** target pattern contains no '%'. Stop.
make[5]: Entering directory '/home/packages/openjdk/12/openjdk-12-12~23'
make[5]: warning: -j1 forced in submake: resetting jobserver mode.
Main.gmk:
# Let "run-test" be an alias for "test"
$(foreach t, $(ALL_NAMED_TESTS), $(eval run-test-$t: test-$t))
$ make --version
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
From shade at redhat.com Thu Dec 6 16:41:26 2018
From: shade at redhat.com (Aleksey Shipilev)
Date: Thu, 6 Dec 2018 17:41:26 +0100
Subject: bootcycle builds x86_64-linux-gnu?
In-Reply-To:
References: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
Message-ID: <4c491e45-c5e3-32a3-93ee-7d7041fe1200@redhat.com>
On 12/6/18 4:34 PM, Matthias Klose wrote:
> my bad, that happens in the test-image target:
>
> In the build log I see:
>
> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jdk
> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/langtools
> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/nashorn
> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jaxp
>
>
> make[5]: Leaving directory '/home/packages/openjdk/12/openjdk-12-12~23'
> make/Main.gmk:1087: *** target pattern contains no '%'. Stop.
> make[5]: Entering directory '/home/packages/openjdk/12/openjdk-12-12~23'
> make[5]: warning: -j1 forced in submake: resetting jobserver mode.
I wonder if "~" in your path screws things up.
"test-image" also passes for me on current jdk/jdk:
~/trunks/jdk-jdk $ CONF=linux-x86_64-server-fastdebug make test-image
...
Finished building target 'test-image' in configuration 'linux-x86_64-server-fastdebug'
-Aleksey
From takiguc at linux.vnet.ibm.com Thu Dec 6 17:05:13 2018
From: takiguc at linux.vnet.ibm.com (Ichiroh Takiguchi)
Date: Fri, 07 Dec 2018 02:05:13 +0900
Subject: RFR: 8214533 IBM-29626C is required for AIX default charset
In-Reply-To: <6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
References: <6e0506fa72311261d3b5923dd58cdb3c@linux.vnet.ibm.com>
<07f980b6bd352a9eff8f2d0d161f3f19@linux.vnet.ibm.com>
<74984761-7152-6026-42a5-fc60a6298a4b@oracle.com>
<260a71c0-31f8-7127-8627-b383ddd73b5b@oracle.com>
<6f0545b9-e304-4747-8004-f0e531b9e83d@oracle.com>
Message-ID: <40eac4cde890ddde70eb24846aff2c83@linux.vnet.ibm.com>
Hello.
(I'm sorry, I made a mistake, I forgot to change Subject)
Could you review the fix ?
Bug: https://bugs.openjdk.java.net/browse/JDK-8214533
Change: https://cr.openjdk.java.net/~itakiguchi/8214533/webrev.00/
IBM29626C charset is required for AIX default charset.
Java cannot start because of java/lang/ExceptionInInitializerError on
AIX ja_JP locale.
To build team,
I'd like to change following charsetmapping tool.
* make/jdk/src/classes/build/tools/charsetmapping/Main.java
* make/jdk/src/classes/build/tools/charsetmapping/SPI.java
* make/jdk/src/classes/build/tools/charsetmapping/SRC.java
build.tools.charsetmapping,Main supports "os" tag, but it seems it's not
used.
Currently, "os" supports "windows" or "unix".
I extended "os" tag's feature.
If "os aix" is there, this charset is only added into AIX platform.
(I assume "type template" should be used)
"aix" comes from "stdcs-aix" file name.
======
charset x-IBM29626C IBM29626C
package sun.nio.cs.ext
type template
os aix <=====
alias cp29626C # JDK historical
alias ibm29626C
alias ibm-29626C
alias 29626C
alias ibm-eucjp
======
If cs.os is null,
this charset is stored into gensrc directory.
Charset name is added into StandardCharsets.java or
ExtendedCharsets.java
If cs.os is "false",
this charset is NOT stored into gensrc directory.
Charset name is NOT added into StandardCharsets.java or
ExtendedCharsets.java
"os" tag supports multiple entries by using ",", like "aix,linux"
Then we can store new charset into
src/jdk.charsets/share/classes/sun/nio/cs/ext/ directory
$ locale charmap
IBM-eucJP
$ jshell
| JShell -- 12-internal
| : /help intro
jshell> var cs = java.nio.charset.Charset.defaultCharset()
cs ==> x-IBM29626C
jshell> cs.getClass().getName()
$2 ==> "sun.nio.cs.IBM29626C"
jshell> System.out.println(String.join("\n", cs.aliases()))
cp29626C
ibm-29626C
ibm-eucjp
ibm29626C
29626C
jshell> /exit
|
$
I tested Linux and Windows build.
======
$ grep 29626 build.log
IBM29626C, x-IBM29626C, null, sun.nio.cs.ext, template false
$ find support/gensrc/ | grep 29626
$ find support/gensrc/ | grep Charsets
support/gensrc/java.base/sun/nio/cs/StandardCharsets.java
support/gensrc/jdk.charsets/sun/nio/cs/ext/ExtendedCharsets.java
$ find support/gensrc/ | grep Charsets | xargs grep 29626
$
======
I'd like to obtain a sponsor for this issue.
Thanks,
Ichiroh Takiguchi
IBM Japan, Ltd.
On 2018-11-28 19:10, Magnus Ihse Bursie wrote:
> On 2018-11-28 10:36, Alan Bateman wrote:
>> On 28/11/2018 09:28, Magnus Ihse Bursie wrote:
>>> I'm quite unsatisfied with the current handling of character sets in
>>> the build in general. :-( I'd really like to modernize it. I have a,
>>> slightly fuzzy, laundry list of things I want to fix from a build
>>> perspective, but I'm not sure of what "external" requirements are
>>> coming from AIX and the general core-libs agenda regarding character
>>> sets in general.
>>>
>>> I think there is a good opportunity to solve many problems at the
>>> same time here, as long as everyone agrees on what is the preferred
>>> outcome.
>> The support in the build to configure the charsets to include in
>> java.base on each platform has been working well. Charsets that aren't
>> in java.base go into the jdk.charsets service provider module and that
>> has been working well too. From the result point of view, perhaps, but
>> definitely not from the build perspective. ;-) But yes, I understand
>> this is functionality that should be kept.
>> One thing that we lack is some way to add charsets for specific
>> platforms and this comes up with the IBM patches where they are
>> looking to adding several additional IBM charsets. One starting point
>> that we've touched on in several threads here is dropping the EBCDIC
>> charsets from the main stream builds. Going there will need build
>> support.
> So build support for trivially adding specific charsets to specific
> platforms? Both to java.base (for AIX) and jdk.charsets, I presume,
> then?
>
> Can you expand on the issue of dropping ebcdic? What's the problem
> that needs build support?
>
> /Magnus
>>
>>
>> -Alan
From doko at ubuntu.com Thu Dec 6 18:31:17 2018
From: doko at ubuntu.com (Matthias Klose)
Date: Thu, 6 Dec 2018 19:31:17 +0100
Subject: bootcycle builds x86_64-linux-gnu?
In-Reply-To: <4c491e45-c5e3-32a3-93ee-7d7041fe1200@redhat.com>
References: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
<4c491e45-c5e3-32a3-93ee-7d7041fe1200@redhat.com>
Message-ID:
On 06.12.18 17:41, Aleksey Shipilev wrote:
> On 12/6/18 4:34 PM, Matthias Klose wrote:
>> my bad, that happens in the test-image target:
>>
>> In the build log I see:
>>
>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jdk
>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/langtools
>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/nashorn
>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jaxp
>>
>>
>> make[5]: Leaving directory '/home/packages/openjdk/12/openjdk-12-12~23'
>> make/Main.gmk:1087: *** target pattern contains no '%'. Stop.
>> make[5]: Entering directory '/home/packages/openjdk/12/openjdk-12-12~23'
>> make[5]: warning: -j1 forced in submake: resetting jobserver mode.
>
> I wonder if "~" in your path screws things up.
that worked at least for the openjdk-11 development cycle, and replacing the
tilde with a dash makes no difference.
From erik.joelsson at oracle.com Thu Dec 6 19:04:18 2018
From: erik.joelsson at oracle.com (Erik Joelsson)
Date: Thu, 6 Dec 2018 11:04:18 -0800
Subject: bootcycle builds x86_64-linux-gnu?
In-Reply-To:
References: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
<4c491e45-c5e3-32a3-93ee-7d7041fe1200@redhat.com>
Message-ID:
Could you insert this before line 1087 in make/Main.gmk and post the output?
$(call PrintVar, ALL_NAMED_TESTS)
/Erik
On 2018-12-06 10:31, Matthias Klose wrote:
> On 06.12.18 17:41, Aleksey Shipilev wrote:
>> On 12/6/18 4:34 PM, Matthias Klose wrote:
>>> my bad, that happens in the test-image target:
>>>
>>> In the build log I see:
>>>
>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jdk
>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/langtools
>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/nashorn
>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jaxp
>>>
>>>
>>> make[5]: Leaving directory '/home/packages/openjdk/12/openjdk-12-12~23'
>>> make/Main.gmk:1087: *** target pattern contains no '%'. Stop.
>>> make[5]: Entering directory '/home/packages/openjdk/12/openjdk-12-12~23'
>>> make[5]: warning: -j1 forced in submake: resetting jobserver mode.
>> I wonder if "~" in your path screws things up.
> that worked at least for the openjdk-11 development cycle, and replacing the
> tilde with a dash makes no difference.
From doko at ubuntu.com Thu Dec 6 19:23:29 2018
From: doko at ubuntu.com (Matthias Klose)
Date: Thu, 6 Dec 2018 20:23:29 +0100
Subject: bootcycle builds x86_64-linux-gnu?
In-Reply-To:
References: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
<4c491e45-c5e3-32a3-93ee-7d7041fe1200@redhat.com>
Message-ID:
On 06.12.18 20:04, Erik Joelsson wrote:
> Could you insert this before line 1087 in make/Main.gmk and post the output?
>
> $(call PrintVar, ALL_NAMED_TESTS)
>
> /Erik
>
> On 2018-12-06 10:31, Matthias Klose wrote:
>> On 06.12.18 17:41, Aleksey Shipilev wrote:
>>> On 12/6/18 4:34 PM, Matthias Klose wrote:
>>>> my bad, that happens in the test-image target:
>>>>
>>>> In the build log I see:
>>>>
>>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jdk
>>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/langtools
>>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/nashorn
>>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jaxp
>>>>
>>>>
>>>> make[5]: Leaving directory '/home/packages/openjdk/12/openjdk-12-12~23'
>>>> make/Main.gmk:1087: *** target pattern contains no '%'.? Stop.
>>>> make[5]: Entering directory '/home/packages/openjdk/12/openjdk-12-12~23'
>>>> make[5]: warning: -j1 forced in submake: resetting jobserver mode.
>>> I wonder if "~" in your path screws things up.
>> that worked at least for the openjdk-11 development cycle, and replacing the
>> tilde with a dash makes no difference.
ALL_NAMED_TESTS >build core_tools ctw_1 ctw_2 ctw_3 hotspot_all
hotspot_all_no_apps hotspot_appcds hotspot_cds hotspot_co
mpiler hotspot_compiler_all_gcs hotspot_compiler_xcomp hotspot_gc
hotspot_handshake hotspot_misc hotspot_native_sanity ho
tspot_nmt hotspot_not_fast_compiler hotspot_not_fast_gc hotspot_rest_runtime
hotspot_runtime hotspot_runtime_minimalvm ho
tspot_serviceability hotspot_slow_compiler hotspot_tier2_runtime
hotspot_tier2_runtime_platform_agnostic hotspot_tier3_ru
ntime jaxp_all jcstress_part1 jcstress_part2 jcstress_part3 jdk_2d jdk_awt
jdk_beans jdk_client_sanity jdk_collections jd
k_collections_core jdk_concurrent jdk_core jdk_desktop jdk_desktop_core
jdk_imageio jdk_instrument jdk_instrument_sanity
jdk_io jdk_jdi jdk_jdi_sanity jdk_jfr jdk_jfr_sanity jdk_jmx jdk_jmx_sanity
jdk_lang jdk_launcher jdk_management jdk_mana
gement_sanity jdk_math jdk_native_sanity jdk_net jdk_nio jdk_other jdk_rmi
jdk_sctp jdk_security jdk_security1 jdk_security2 jdk_security3 jdk_security4
jdk_security_infra jdk_sound jdk_stable jdk_stream jdk_svc jdk_svc_sanity
jdk_swing jdk_swing_core jdk_text jdk_time jdk_tools jdk_util jdk_util_other
jfc_demo needs_g1gc svc_tools svc_tools_sanity tier1 tier1_common tier1_compiler
tier1_compiler_1 tier1_compiler_2 tier1_compiler_3 tier1_compiler_not_cms
tier1_compiler_not_xcomp tier1_gc tier1_gc_1 tier1_gc_2 tier1_gc_gcbasher
tier1_gc_gcold tier1_part1 tier1_part2 tier1_part3 tier1_runtime
tier1_runtime_appcds tier1_runtime_appcds_exclude tier1_serviceability tier2
tier2_part1 tier2_part2 tier2_part3 tier3 vmTestbase_largepages
vmTestbase_nsk_aod vmTestbase_nsk_jdb vmTestbase_nsk_jdi
vmTestbase_nsk_jdi_quick vmTestbase_nsk_jdwp vmTestbase_nsk_jdwp_quick
vmTestbase_nsk_jvmti vmTestbase_nsk_jvmti_quick vmTestbase_nsk_monitoring
vmTestbase_nsk_monitoring_quick vmTestbase_nsk_stress vmTestbase_nsk_sysdict
vmTestbase_vm_compiler vmTestbase_vm_compiler_quick vmTestbase_vm_defmeth
vmTestbase_vm_g1classunloading vmTestbase_vm_gc vmTestbase_vm_gc_compact
vmTestbase_vm_gc_concurrent vmTestbase_vm_gc_container vmTestbase_vm_gc_juggle
vmTestbase_vm_gc_locker vmTestbase_vm_gc_misc vmTestbase_vm_gc_quick
vmTestbase_vm_gc_ref vmTestbase_vm_metaspace vmTestbase_vm_mlvm gtest micro
make-make-base make-java-compilation make-copy-files make-idea
make-compile-commands failure-handler make<
From erik.joelsson at oracle.com Thu Dec 6 21:03:09 2018
From: erik.joelsson at oracle.com (Erik Joelsson)
Date: Thu, 6 Dec 2018 13:03:09 -0800
Subject: bootcycle builds x86_64-linux-gnu?
In-Reply-To:
References: <802b6fab-30db-7db7-5a48-d78ee1c6a7aa@ubuntu.com>
<4c491e45-c5e3-32a3-93ee-7d7041fe1200@redhat.com>
Message-ID:
Nothing strange in there. Is it only printed once? I wouldn't be
surprised if this got printed more than one time during a normal make
execution (due to reloads caused by -include). If it is, then perhaps
there is something different in a later print?
/Erik
On 2018-12-06 11:23, Matthias Klose wrote:
> On 06.12.18 20:04, Erik Joelsson wrote:
>> Could you insert this before line 1087 in make/Main.gmk and post the output?
>>
>> $(call PrintVar, ALL_NAMED_TESTS)
>>
>> /Erik
>>
>> On 2018-12-06 10:31, Matthias Klose wrote:
>>> On 06.12.18 17:41, Aleksey Shipilev wrote:
>>>> On 12/6/18 4:34 PM, Matthias Klose wrote:
>>>>> my bad, that happens in the test-image target:
>>>>>
>>>>> In the build log I see:
>>>>>
>>>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jdk
>>>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/langtools
>>>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/nashorn
>>>>> FindJtregGroups /home/packages/openjdk/12/openjdk-12-12~23/test/jaxp
>>>>>
>>>>>
>>>>> make[5]: Leaving directory '/home/packages/openjdk/12/openjdk-12-12~23'
>>>>> make/Main.gmk:1087: *** target pattern contains no '%'.? Stop.
>>>>> make[5]: Entering directory '/home/packages/openjdk/12/openjdk-12-12~23'
>>>>> make[5]: warning: -j1 forced in submake: resetting jobserver mode.
>>>> I wonder if "~" in your path screws things up.
>>> that worked at least for the openjdk-11 development cycle, and replacing the
>>> tilde with a dash makes no difference.
> ALL_NAMED_TESTS >build core_tools ctw_1 ctw_2 ctw_3 hotspot_all
> hotspot_all_no_apps hotspot_appcds hotspot_cds hotspot_co
> mpiler hotspot_compiler_all_gcs hotspot_compiler_xcomp hotspot_gc
> hotspot_handshake hotspot_misc hotspot_native_sanity ho
> tspot_nmt hotspot_not_fast_compiler hotspot_not_fast_gc hotspot_rest_runtime
> hotspot_runtime hotspot_runtime_minimalvm ho
> tspot_serviceability hotspot_slow_compiler hotspot_tier2_runtime
> hotspot_tier2_runtime_platform_agnostic hotspot_tier3_ru
> ntime jaxp_all jcstress_part1 jcstress_part2 jcstress_part3 jdk_2d jdk_awt
> jdk_beans jdk_client_sanity jdk_collections jd
> k_collections_core jdk_concurrent jdk_core jdk_desktop jdk_desktop_core
> jdk_imageio jdk_instrument jdk_instrument_sanity
> jdk_io jdk_jdi jdk_jdi_sanity jdk_jfr jdk_jfr_sanity jdk_jmx jdk_jmx_sanity
> jdk_lang jdk_launcher jdk_management jdk_mana
> gement_sanity jdk_math jdk_native_sanity jdk_net jdk_nio jdk_other jdk_rmi
> jdk_sctp jdk_security jdk_security1 jdk_security2 jdk_security3 jdk_security4
> jdk_security_infra jdk_sound jdk_stable jdk_stream jdk_svc jdk_svc_sanity
> jdk_swing jdk_swing_core jdk_text jdk_time jdk_tools jdk_util jdk_util_other
> jfc_demo needs_g1gc svc_tools svc_tools_sanity tier1 tier1_common tier1_compiler
> tier1_compiler_1 tier1_compiler_2 tier1_compiler_3 tier1_compiler_not_cms
> tier1_compiler_not_xcomp tier1_gc tier1_gc_1 tier1_gc_2 tier1_gc_gcbasher
> tier1_gc_gcold tier1_part1 tier1_part2 tier1_part3 tier1_runtime
> tier1_runtime_appcds tier1_runtime_appcds_exclude tier1_serviceability tier2
> tier2_part1 tier2_part2 tier2_part3 tier3 vmTestbase_largepages
> vmTestbase_nsk_aod vmTestbase_nsk_jdb vmTestbase_nsk_jdi
> vmTestbase_nsk_jdi_quick vmTestbase_nsk_jdwp vmTestbase_nsk_jdwp_quick
> vmTestbase_nsk_jvmti vmTestbase_nsk_jvmti_quick vmTestbase_nsk_monitoring
> vmTestbase_nsk_monitoring_quick vmTestbase_nsk_stress vmTestbase_nsk_sysdict
> vmTestbase_vm_compiler vmTestbase_vm_compiler_quick vmTestbase_vm_defmeth
> vmTestbase_vm_g1classunloading vmTestbase_vm_gc vmTestbase_vm_gc_compact
> vmTestbase_vm_gc_concurrent vmTestbase_vm_gc_container vmTestbase_vm_gc_juggle
> vmTestbase_vm_gc_locker vmTestbase_vm_gc_misc vmTestbase_vm_gc_quick
> vmTestbase_vm_gc_ref vmTestbase_vm_metaspace vmTestbase_vm_mlvm gtest micro
> make-make-base make-java-compilation make-copy-files make-idea
> make-compile-commands failure-handler make<
From ali.ince at gmail.com Thu Dec 6 22:49:04 2018
From: ali.ince at gmail.com (=?utf-8?B?QWxpIMSwbmNl?=)
Date: Thu, 6 Dec 2018 22:49:04 +0000
Subject: [PATCH] JDK-8214122 Prevent name mangling of jdwpTransport_OnLoad
in Windows 32-bit DLL name decoration
In-Reply-To:
References: <2DD922C6-EFB1-4891-90F0-3378DEA91B1C@gmail.com>
<07840796-f1c4-e077-7b0b-cd5c1a880ec1@oracle.com>
<00e58330-26f0-4401-f911-24fda0127bcc@oracle.com>
<34d2b504-c4eb-6df3-3bd1-e23b9c22ea6a@oracle.com>
<01b80c3f-8f71-26ec-304e-a7b245924bd5@oracle.com>
<17e7873f-f2f4-dc02-82a6-2d7eb1565ca2@oracle.com>
<5e032661-b70c-c6ec-2700-120589300c9e@oracle.com>
Message-ID: <5A54BA77-B240-472A-A4B7-535C3A30A20F@gmail.com>
Hi Magnus, Alexey,
I believe we won?t be able to get further opinions from serviceability-dev. Andrew Luo suggested using a similar mechanism as is used for jvm.dll by using symbol name files mapped by platform (files are under make/hotspot/symbols and interestingly windows is almost the only platform for which a symbol file doesn?t exist).
Another issue, again opened against AdoptOpenJDK 32-bit builds is somehow related with the same problem - but this time it is jimage.dll depending on zip.dll expecting the ZIP_InflateFully function to be decorated with JNICALL - whereas it was removed earlier from the implementation and the runtime image just fails with access violation just because jimage source code still declared it with JNICALL (https://github.com/AdoptOpenJDK/openjdk-build/issues/763 ).
I?ve also searched for GetProcAddress calls across the source code - and I think it?s important to work on the consistency of JNICALL usages across the whole source code.
Another noteworthy thing I?ve noticed is there are still JNICALL modifiers for example in https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/jdk.crypto.cryptoki/windows/native/libj2pkcs11/j2secmod_md.c#L49 - which I guess will also be reported as broken since these functions are again name decorated.
If we?re still determined to remove JNICALL, what about just removing __stdcall from JNICALL declaration at https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/master/src/java.base/windows/native/include/jni_md.h#L31 ? Wouldn?t that be a more consistent move?
Regards,
Ali
> On 22 Nov 2018, at 17:29, Magnus Ihse Bursie wrote:
>
> I think we are in complete agreement. What's missing is some expert opinion from serviceability-dev if there is any problem with changing the signature. I'd preferably have that.
>
> If no one knows, I'd say, change it, and see if we still pass the relevant tests, and if so, ship it.
>
> /Magnus
>
> 22 nov. 2018 kl. 18:04 skrev Alexey Ivanov >:
>
>>
>> On 21/11/2018 12:16, Magnus Ihse Bursie wrote:
>>>
>>> On 2018-11-20 16:49, Alexey Ivanov wrote:
>>>
>>>> Hi Ali, Magnus,
>>>>
>>>> I absolutely agree this change has to be reviewed by someone from serviceability.
>>>>
>>>> There are several options:
>>>>
>>>> 1. Add -export:jdwpTransport_OnLoad to LDFLAGS for Windows
>>>> http://mail.openjdk.java.net/pipermail/build-dev/2018-November/023935.html
>>>> so it partially reverts the changes from
>>>> https://bugs.openjdk.java.net/browse/JDK-8200178
>>>>
>>>> 2. Remove JNICALL (__stdcall) modifier, eventually changing the calling convention to __cdecl.
>>>> http://mail.openjdk.java.net/pipermail/build-dev/2018-November/023969.html
>>>>
>>>> 3. Use inline /export option via #pragma:
>>>> #pragma comment(linker, "/export:jdwpTransport_OnLoad= _jdwpTransport_OnLoad at 16")
>>>> as referenced in
>>>> https://docs.microsoft.com/en-ie/cpp/cpp/dllexport-dllimport?view=vs-2017
>>>> https://docs.microsoft.com/en-ie/cpp/build/reference/exports?view=vs-2017
>>>>
>>>> The third options still needs to be tested to make sure it does not break other platforms builds.
>>> I'm not fond of either solution 1 or 3. I really think the signature should be made correctly at the point of definition in the source code.
>>
>> That is why I proposed removing JNICALL (__stdcall) from the function declaration as we had done for libzip, libjimage [1] and mlib_image [2].
>>
>> Microsoft recommends using __stdcall for DLLs, at the same time it decorates the function name making it harder to export it by its plain name.
>>
>>
>> By removing JNICALL / __stdcall, we make the function use __cdecl calling convention. The difference between them is that with __stdcall the callee cleans the stack whereas with __cdecl the caller cleans the stack.
>>
>> It shouldn't be a problem as long as all function declarations use the same calling convention, which, I believe, is the case here.
>>
>>> We've spent some considerable effort of getting rid of the /export flags for Windows (and map files for unix), and I don't want to see them creep back in. Note that option 3 is just option 1 in disguise. The only single good thing about it is that it allows you to put the compiler option next to the signature declaration in the source code.
>>
>> At least in this case, the option will be near the function body definition. It will be easier to update it if the signature changes.
>>
>> If we are to use __stdcall, it seems to be the only way to export the undecorated name.
>>
>>> The same goes for def files, as suggested by Ali. It's just yet another version of option 1 in disguise/map files.
>>
>> If option 2 is rejected, I'm for using option 3. If option 3 cannot be used too, I'm for option 1.
>> I think we should not fall back to def files in any case. And Makefile will have to include the reference to the def file, so it's even worse than option 1.
>>
>>
>> Regards,
>> Alexey
>>
>> [1] https://bugs.openjdk.java.net/browse/JDK-8201226
>> [2] https://bugs.openjdk.java.net/browse/JDK-8202476
>>>
>>> /Magnus
>>>
>>>>
>>>>
>>>> Regards,
>>>> Alexey
>>>>
>>>> On 19/11/2018 12:19, Magnus Ihse Bursie wrote:
>>>>> Hi Ali,
>>>>>
>>>>> From a build perspective this change looks OK. I'm not aware of the finer details on the OnLoad mechanism, like what calling convention is to be used. So maybe this is a no-go from that view.
>>>>>
>>>>> I'm cc:ing servicability so they can have a look at it.
>>>>>
>>>>> /Magnus
>>>>>
>>>>> On 2018-11-18 13:07, Ali ?nce wrote:
>>>>>> Hi Alexey,
>>>>>>
>>>>>> Below is a new patch content that removes JNICALL modifiers from the exported functions of interest. This results in exported functions not to be name decorated and use __cdecl calling convention.
>>>>>>
>>>>>> Do you have any more suggestions, or would you please guide me on next steps?
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Ali
>>>>>>
>>>>>> # HG changeset patch
>>>>>> # User Ali Ince
>>>>>> # Date 1542542415 0
>>>>>> # Sun Nov 18 12:00:15 2018 +0000
>>>>>> # Node ID a41df44e13e1b761f4b3f05a17ed18953067ae39
>>>>>> # Parent 16d5ec7dbbb49ef3f969e34be870e3f917ea89ff
>>>>>> Remove JNICALL modifiers to prevent name decoration on 32-bit windows builds
>>>>>>
>>>>>> diff -r 16d5ec7dbbb4 -r a41df44e13e1 src/jdk.jdi/share/native/libdt_shmem/shmemBack.c
>>>>>> --- a/src/jdk.jdi/share/native/libdt_shmem/shmemBack.c Tue Aug 14 14:28:23 2018 +0200
>>>>>> +++ b/src/jdk.jdi/share/native/libdt_shmem/shmemBack.c Sun Nov 18 12:00:15 2018 +0000
>>>>>> @@ -339,7 +339,7 @@
>>>>>> return JDWPTRANSPORT_ERROR_NONE;
>>>>>> }
>>>>>>
>>>>>> -JNIEXPORT jint JNICALL
>>>>>> +JNIEXPORT jint
>>>>>> jdwpTransport_OnLoad(JavaVM *vm, jdwpTransportCallback* cbTablePtr,
>>>>>> jint version, jdwpTransportEnv** result)
>>>>>> {
>>>>>> diff -r 16d5ec7dbbb4 -r a41df44e13e1 src/jdk.jdwp.agent/share/native/include/jdwpTransport.h
>>>>>> --- a/src/jdk.jdwp.agent/share/native/include/jdwpTransport.h Tue Aug 14 14:28:23 2018 +0200
>>>>>> +++ b/src/jdk.jdwp.agent/share/native/include/jdwpTransport.h Sun Nov 18 12:00:15 2018 +0000
>>>>>> @@ -140,7 +140,7 @@
>>>>>> void (*free)(void *buffer); /* Call this for all deallocations */
>>>>>> } jdwpTransportCallback;
>>>>>>
>>>>>> -typedef jint (JNICALL *jdwpTransport_OnLoad_t)(JavaVM *jvm,
>>>>>> +typedef jint (*jdwpTransport_OnLoad_t)(JavaVM *jvm,
>>>>>> jdwpTransportCallback *callback,
>>>>>> jint version,
>>>>>> jdwpTransportEnv** env);
>>>>>> diff -r 16d5ec7dbbb4 -r a41df44e13e1 src/jdk.jdwp.agent/share/native/libdt_socket/socketTransport.c
>>>>>> --- a/src/jdk.jdwp.agent/share/native/libdt_socket/socketTransport.c Tue Aug 14 14:28:23 2018 +0200
>>>>>> +++ b/src/jdk.jdwp.agent/share/native/libdt_socket/socketTransport.c Sun Nov 18 12:00:15 2018 +0000
>>>>>> @@ -1019,7 +1019,7 @@
>>>>>> return JDWPTRANSPORT_ERROR_NONE;
>>>>>> }
>>>>>>
>>>>>> -JNIEXPORT jint JNICALL
>>>>>> +JNIEXPORT jint
>>>>>> jdwpTransport_OnLoad(JavaVM *vm, jdwpTransportCallback* cbTablePtr,
>>>>>> jint version, jdwpTransportEnv** env)
>>>>>> {
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On 16 Nov 2018, at 23:03, Alexey Ivanov wrote:
>>>>>>>
>>>>>>> Hi Ali,
>>>>>>>
>>>>>>> It's exactly what I referred to.
>>>>>>>
>>>>>>> Yes, it does change the calling convention.
>>>>>>> Yet it's not a (big) problem because both parties will use the same calling convention.
>>>>>>>
>>>>>>> Using a DLL from another build will not be possible. But it's not a good idea to do so anyway.
>>>>>>>
>>>>>>>
>>>>>>> Mapfiles and export options have been removed by https://bugs.openjdk.java.net/browse/JDK-8200178 to simplify managing exported functions. So that to add or remove an exported function, you don't have modify makefiles and/or mapfiles. You just edit the source files.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Alexey
>>>>>>>
>>>>>>> On 16/11/2018 22:42, Ali ?nce wrote:
>>>>>>>> Hi Alexey,
>>>>>>>>
>>>>>>>> Thanks for your reply.
>>>>>>>>
>>>>>>>> I will definitely give it a try though I?m not sure if that?ll be a breaking change. This is because JNICALL modifier is defined to be __stdcall on windows which is both specified on jdwpTransport_OnLoad exported functions both for dt_socket.dll and dt_shmem.dll.
>>>>>>>>
>>>>>>>> The __stdcall is ignored on x64 platforms and also name decoration is not applied (https://docs.microsoft.com/en-gb/cpp/build/reference/decorated-names?view=vs-2017 ). I believe that?s why we don?t experience any problems on x64 builds.
>>>>>>>>
>>>>>>>> Removing JNICALL (thus __stdcall) modifier (apparently only applies to x86 builds) will result in the calling convention to be changed, and thus will change how parameters are ordered and also the stack cleanup rules. I think this may result in problems in programs that are designed to load shared libraries and its exported functions at runtime (not bound by link time which probably won?t cause any issues - assuming that they use the shared function signature) - as in https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/5f01925b80ed851b133ee26fbcb07026ac04149e/src/jdk.jdwp.agent/share/native/libjdwp/transport.c#L99 .
>>>>>>>>
>>>>>>>> Any thoughts?
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Ali
>>>>>>>>
>>>>>>>>> On 15 Nov 2018, at 22:14, Alexey Ivanov