I4AKKS: New features of Bisheng JDK 11.0.12
This commit is contained in:
parent
f82778842a
commit
df1fa1401f
127
8257145-Performance-regression-with-XX-ResizePLAB-af.patch
Executable file
127
8257145-Performance-regression-with-XX-ResizePLAB-af.patch
Executable file
@ -0,0 +1,127 @@
|
|||||||
|
From 1c751a064538c9e80b49fd0270db034ed0dcf11f Mon Sep 17 00:00:00 2001
|
||||||
|
From: wuyan <wuyan34@huawei.com>
|
||||||
|
Date: Thu, 5 Aug 2021 17:29:26 +0800
|
||||||
|
Subject: [PATCH 2/8] 8257145: Performance regression with -XX:-ResizePLAB
|
||||||
|
after JDK-8079555
|
||||||
|
|
||||||
|
Summary: <gc>: backport of JDK-8264640, Performance regression with -XX:-ResizePLAB after JDK-8079555
|
||||||
|
LLT: NA
|
||||||
|
Patch Type: backport
|
||||||
|
Bug url: https://bugs.openjdk.java.net/browse/JDK-8257145
|
||||||
|
---
|
||||||
|
src/hotspot/share/gc/cms/parNewGeneration.cpp | 2 +-
|
||||||
|
src/hotspot/share/gc/g1/g1EvacStats.cpp | 5 +++--
|
||||||
|
src/hotspot/share/gc/g1/g1EvacStats.hpp | 2 +-
|
||||||
|
src/hotspot/share/gc/shared/plab.cpp | 3 +++
|
||||||
|
src/hotspot/share/gc/shared/plab.hpp | 6 ++++--
|
||||||
|
test/hotspot/jtreg/gc/g1/plab/TestPLABPromotion.java | 2 +-
|
||||||
|
6 files changed, 13 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/gc/cms/parNewGeneration.cpp b/src/hotspot/share/gc/cms/parNewGeneration.cpp
|
||||||
|
index 1b95cf52e..b1e8bde61 100644
|
||||||
|
--- a/src/hotspot/share/gc/cms/parNewGeneration.cpp
|
||||||
|
+++ b/src/hotspot/share/gc/cms/parNewGeneration.cpp
|
||||||
|
@@ -627,7 +627,7 @@ ParNewGeneration::ParNewGeneration(ReservedSpace rs, size_t initial_byte_size)
|
||||||
|
: DefNewGeneration(rs, initial_byte_size, "PCopy"),
|
||||||
|
_overflow_list(NULL),
|
||||||
|
_is_alive_closure(this),
|
||||||
|
- _plab_stats("Young", YoungPLABSize, PLABWeight)
|
||||||
|
+ _plab_stats("Young", YoungPLABSize, YoungPLABSize * ParallelGCThreads, PLABWeight)
|
||||||
|
{
|
||||||
|
NOT_PRODUCT(_overflow_counter = ParGCWorkQueueOverflowInterval;)
|
||||||
|
NOT_PRODUCT(_num_par_pushes = 0;)
|
||||||
|
diff --git a/src/hotspot/share/gc/g1/g1EvacStats.cpp b/src/hotspot/share/gc/g1/g1EvacStats.cpp
|
||||||
|
index 70c399691..7070e1840 100644
|
||||||
|
--- a/src/hotspot/share/gc/g1/g1EvacStats.cpp
|
||||||
|
+++ b/src/hotspot/share/gc/g1/g1EvacStats.cpp
|
||||||
|
@@ -28,6 +28,7 @@
|
||||||
|
#include "gc/shared/gcId.hpp"
|
||||||
|
#include "logging/log.hpp"
|
||||||
|
#include "memory/allocation.inline.hpp"
|
||||||
|
+#include "runtime/globals.hpp"
|
||||||
|
|
||||||
|
void G1EvacStats::log_plab_allocation() {
|
||||||
|
PLABStats::log_plab_allocation();
|
||||||
|
@@ -89,8 +90,8 @@ size_t G1EvacStats::compute_desired_plab_sz() {
|
||||||
|
return cur_plab_sz;
|
||||||
|
}
|
||||||
|
|
||||||
|
-G1EvacStats::G1EvacStats(const char* description, size_t desired_plab_sz_, unsigned wt) :
|
||||||
|
- PLABStats(description, desired_plab_sz_, wt),
|
||||||
|
+G1EvacStats::G1EvacStats(const char* description, size_t default_per_thread_plab_size, unsigned wt) :
|
||||||
|
+ PLABStats(description, default_per_thread_plab_size, default_per_thread_plab_size * ParallelGCThreads, wt),
|
||||||
|
_region_end_waste(0),
|
||||||
|
_regions_filled(0),
|
||||||
|
_direct_allocated(0),
|
||||||
|
diff --git a/src/hotspot/share/gc/g1/g1EvacStats.hpp b/src/hotspot/share/gc/g1/g1EvacStats.hpp
|
||||||
|
index 4ac6fd9f5..0baf2fc20 100644
|
||||||
|
--- a/src/hotspot/share/gc/g1/g1EvacStats.hpp
|
||||||
|
+++ b/src/hotspot/share/gc/g1/g1EvacStats.hpp
|
||||||
|
@@ -56,7 +56,7 @@ class G1EvacStats : public PLABStats {
|
||||||
|
virtual size_t compute_desired_plab_sz();
|
||||||
|
|
||||||
|
public:
|
||||||
|
- G1EvacStats(const char* description, size_t desired_plab_sz_, unsigned wt);
|
||||||
|
+ G1EvacStats(const char* description, size_t default_per_thread_plab_size, unsigned wt);
|
||||||
|
|
||||||
|
~G1EvacStats();
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/gc/shared/plab.cpp b/src/hotspot/share/gc/shared/plab.cpp
|
||||||
|
index 29c4cc694..0ad6dda4a 100644
|
||||||
|
--- a/src/hotspot/share/gc/shared/plab.cpp
|
||||||
|
+++ b/src/hotspot/share/gc/shared/plab.cpp
|
||||||
|
@@ -136,6 +136,9 @@ void PLABStats::log_sizing(size_t calculated_words, size_t net_desired_words) {
|
||||||
|
|
||||||
|
// Calculates plab size for current number of gc worker threads.
|
||||||
|
size_t PLABStats::desired_plab_sz(uint no_of_gc_workers) {
|
||||||
|
+ if (!ResizePLAB) {
|
||||||
|
+ return _default_plab_sz;
|
||||||
|
+ }
|
||||||
|
return align_object_size(MIN2(MAX2(min_size(), _desired_net_plab_sz / no_of_gc_workers), max_size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/gc/shared/plab.hpp b/src/hotspot/share/gc/shared/plab.hpp
|
||||||
|
index 608dce56c..06e9cfef3 100644
|
||||||
|
--- a/src/hotspot/share/gc/shared/plab.hpp
|
||||||
|
+++ b/src/hotspot/share/gc/shared/plab.hpp
|
||||||
|
@@ -151,6 +151,7 @@ class PLABStats : public CHeapObj<mtGC> {
|
||||||
|
size_t _wasted; // of which wasted (internal fragmentation)
|
||||||
|
size_t _undo_wasted; // of which wasted on undo (is not used for calculation of PLAB size)
|
||||||
|
size_t _unused; // Unused in last buffer
|
||||||
|
+ size_t _default_plab_sz;
|
||||||
|
size_t _desired_net_plab_sz;// Output of filter (below), suitably trimmed and quantized
|
||||||
|
AdaptiveWeightedAverage
|
||||||
|
_filter; // Integrator with decay
|
||||||
|
@@ -169,13 +170,14 @@ class PLABStats : public CHeapObj<mtGC> {
|
||||||
|
virtual size_t compute_desired_plab_sz();
|
||||||
|
|
||||||
|
public:
|
||||||
|
- PLABStats(const char* description, size_t desired_net_plab_sz_, unsigned wt) :
|
||||||
|
+ PLABStats(const char* description, size_t default_per_thread_plab_size, size_t desired_net_plab_sz, unsigned wt) :
|
||||||
|
_description(description),
|
||||||
|
_allocated(0),
|
||||||
|
_wasted(0),
|
||||||
|
_undo_wasted(0),
|
||||||
|
_unused(0),
|
||||||
|
- _desired_net_plab_sz(desired_net_plab_sz_),
|
||||||
|
+ _default_plab_sz(default_per_thread_plab_size),
|
||||||
|
+ _desired_net_plab_sz(desired_net_plab_sz),
|
||||||
|
_filter(wt)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
diff --git a/test/hotspot/jtreg/gc/g1/plab/TestPLABPromotion.java b/test/hotspot/jtreg/gc/g1/plab/TestPLABPromotion.java
|
||||||
|
index 97f221eeb..6be46e36b 100644
|
||||||
|
--- a/test/hotspot/jtreg/gc/g1/plab/TestPLABPromotion.java
|
||||||
|
+++ b/test/hotspot/jtreg/gc/g1/plab/TestPLABPromotion.java
|
||||||
|
@@ -73,7 +73,7 @@ public class TestPLABPromotion {
|
||||||
|
private static final int PLAB_SIZE_HIGH = 65536;
|
||||||
|
private static final int OBJECT_SIZE_SMALL = 10;
|
||||||
|
private static final int OBJECT_SIZE_MEDIUM = 100;
|
||||||
|
- private static final int OBJECT_SIZE_HIGH = 1000;
|
||||||
|
+ private static final int OBJECT_SIZE_HIGH = 3500;
|
||||||
|
private static final int GC_NUM_SMALL = 1;
|
||||||
|
private static final int GC_NUM_MEDIUM = 3;
|
||||||
|
private static final int GC_NUM_HIGH = 7;
|
||||||
|
--
|
||||||
|
2.22.0
|
||||||
|
|
||||||
242
8268427-Improve-AlgorithmConstraints-checkAlgorithm-.patch
Executable file
242
8268427-Improve-AlgorithmConstraints-checkAlgorithm-.patch
Executable file
@ -0,0 +1,242 @@
|
|||||||
|
From e3d9485d01941cfbbe01dc8dcea7b913c2e8469d Mon Sep 17 00:00:00 2001
|
||||||
|
From: chenshanyao <chenshanyao@huawei.com>
|
||||||
|
Date: Tue, 14 Sep 2021 11:43:18 +0800
|
||||||
|
Subject: [PATCH 8/8] 8268427: Improve AlgorithmConstraints:checkAlgorithm
|
||||||
|
performance
|
||||||
|
|
||||||
|
Summary: <java> : performance
|
||||||
|
LLT: jdk_security
|
||||||
|
Patch Type: backport
|
||||||
|
Bug url: https://bugs.openjdk.java.net/browse/JDK-8268427
|
||||||
|
---
|
||||||
|
.../util/AbstractAlgorithmConstraints.java | 39 +++++------
|
||||||
|
.../util/DisabledAlgorithmConstraints.java | 28 ++++----
|
||||||
|
.../util/LegacyAlgorithmConstraints.java | 2 +-
|
||||||
|
.../security/AlgorithmConstraintsPermits.java | 66 +++++++++++++++++++
|
||||||
|
4 files changed, 95 insertions(+), 40 deletions(-)
|
||||||
|
create mode 100644 test/micro/org/openjdk/bench/java/security/AlgorithmConstraintsPermits.java
|
||||||
|
|
||||||
|
diff --git a/src/java.base/share/classes/sun/security/util/AbstractAlgorithmConstraints.java b/src/java.base/share/classes/sun/security/util/AbstractAlgorithmConstraints.java
|
||||||
|
index 8d8c5d6fe..3f5678950 100644
|
||||||
|
--- a/src/java.base/share/classes/sun/security/util/AbstractAlgorithmConstraints.java
|
||||||
|
+++ b/src/java.base/share/classes/sun/security/util/AbstractAlgorithmConstraints.java
|
||||||
|
@@ -32,6 +32,7 @@ import java.security.Security;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
+import java.util.TreeSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@@ -48,7 +49,7 @@ public abstract class AbstractAlgorithmConstraints
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get algorithm constraints from the specified security property.
|
||||||
|
- static List<String> getAlgorithms(String propertyName) {
|
||||||
|
+ static Set<String> getAlgorithms(String propertyName) {
|
||||||
|
String property = AccessController.doPrivileged(
|
||||||
|
new PrivilegedAction<String>() {
|
||||||
|
@Override
|
||||||
|
@@ -72,38 +73,30 @@ public abstract class AbstractAlgorithmConstraints
|
||||||
|
|
||||||
|
// map the disabled algorithms
|
||||||
|
if (algorithmsInProperty == null) {
|
||||||
|
- return Collections.emptyList();
|
||||||
|
+ return Collections.emptySet();
|
||||||
|
}
|
||||||
|
- return new ArrayList<>(Arrays.asList(algorithmsInProperty));
|
||||||
|
+ Set<String> algorithmsInPropertySet = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
|
||||||
|
+ algorithmsInPropertySet.addAll(Arrays.asList(algorithmsInProperty));
|
||||||
|
+ return algorithmsInPropertySet;
|
||||||
|
}
|
||||||
|
|
||||||
|
- static boolean checkAlgorithm(List<String> algorithms, String algorithm,
|
||||||
|
+ static boolean checkAlgorithm(Set<String> algorithms, String algorithm,
|
||||||
|
AlgorithmDecomposer decomposer) {
|
||||||
|
if (algorithm == null || algorithm.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("No algorithm name specified");
|
||||||
|
}
|
||||||
|
|
||||||
|
- Set<String> elements = null;
|
||||||
|
- for (String item : algorithms) {
|
||||||
|
- if (item == null || item.isEmpty()) {
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- // check the full name
|
||||||
|
- if (item.equalsIgnoreCase(algorithm)) {
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
+ if (algorithms.contains(algorithm)) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- // decompose the algorithm into sub-elements
|
||||||
|
- if (elements == null) {
|
||||||
|
- elements = decomposer.decompose(algorithm);
|
||||||
|
- }
|
||||||
|
+ // decompose the algorithm into sub-elements
|
||||||
|
+ Set<String> elements = decomposer.decompose(algorithm);
|
||||||
|
|
||||||
|
- // check the items of the algorithm
|
||||||
|
- for (String element : elements) {
|
||||||
|
- if (item.equalsIgnoreCase(element)) {
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
+ // check the element of the elements
|
||||||
|
+ for (String element : elements) {
|
||||||
|
+ if (algorithms.contains(element)) {
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/java.base/share/classes/sun/security/util/DisabledAlgorithmConstraints.java b/src/java.base/share/classes/sun/security/util/DisabledAlgorithmConstraints.java
|
||||||
|
index 3ee431e62..efc6d339f 100644
|
||||||
|
--- a/src/java.base/share/classes/sun/security/util/DisabledAlgorithmConstraints.java
|
||||||
|
+++ b/src/java.base/share/classes/sun/security/util/DisabledAlgorithmConstraints.java
|
||||||
|
@@ -85,6 +85,9 @@ public class DisabledAlgorithmConstraints extends AbstractAlgorithmConstraints {
|
||||||
|
private static final String PROPERTY_DISABLED_EC_CURVES =
|
||||||
|
"jdk.disabled.namedCurves";
|
||||||
|
|
||||||
|
+ private static final Pattern INCLUDE_PATTERN = Pattern.compile("include " +
|
||||||
|
+ PROPERTY_DISABLED_EC_CURVES, Pattern.CASE_INSENSITIVE);
|
||||||
|
+
|
||||||
|
private static class CertPathHolder {
|
||||||
|
static final DisabledAlgorithmConstraints CONSTRAINTS =
|
||||||
|
new DisabledAlgorithmConstraints(PROPERTY_CERTPATH_DISABLED_ALGS);
|
||||||
|
@@ -95,7 +98,7 @@ public class DisabledAlgorithmConstraints extends AbstractAlgorithmConstraints {
|
||||||
|
new DisabledAlgorithmConstraints(PROPERTY_JAR_DISABLED_ALGS);
|
||||||
|
}
|
||||||
|
|
||||||
|
- private final List<String> disabledAlgorithms;
|
||||||
|
+ private final Set<String> disabledAlgorithms;
|
||||||
|
private final Constraints algorithmConstraints;
|
||||||
|
|
||||||
|
public static DisabledAlgorithmConstraints certPathConstraints() {
|
||||||
|
@@ -130,21 +133,14 @@ public class DisabledAlgorithmConstraints extends AbstractAlgorithmConstraints {
|
||||||
|
disabledAlgorithms = getAlgorithms(propertyName);
|
||||||
|
|
||||||
|
// Check for alias
|
||||||
|
- int ecindex = -1, i = 0;
|
||||||
|
for (String s : disabledAlgorithms) {
|
||||||
|
- if (s.regionMatches(true, 0,"include ", 0, 8)) {
|
||||||
|
- if (s.regionMatches(true, 8, PROPERTY_DISABLED_EC_CURVES, 0,
|
||||||
|
- PROPERTY_DISABLED_EC_CURVES.length())) {
|
||||||
|
- ecindex = i;
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
+ Matcher matcher = INCLUDE_PATTERN.matcher(s);
|
||||||
|
+ if (matcher.matches()) {
|
||||||
|
+ disabledAlgorithms.remove(matcher.group());
|
||||||
|
+ disabledAlgorithms.addAll(
|
||||||
|
+ getAlgorithms(PROPERTY_DISABLED_EC_CURVES));
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
- i++;
|
||||||
|
- }
|
||||||
|
- if (ecindex > -1) {
|
||||||
|
- disabledAlgorithms.remove(ecindex);
|
||||||
|
- disabledAlgorithms.addAll(ecindex,
|
||||||
|
- getAlgorithms(PROPERTY_DISABLED_EC_CURVES));
|
||||||
|
}
|
||||||
|
algorithmConstraints = new Constraints(propertyName, disabledAlgorithms);
|
||||||
|
}
|
||||||
|
@@ -323,8 +319,8 @@ public class DisabledAlgorithmConstraints extends AbstractAlgorithmConstraints {
|
||||||
|
"denyAfter\\s+(\\d{4})-(\\d{2})-(\\d{2})");
|
||||||
|
}
|
||||||
|
|
||||||
|
- public Constraints(String propertyName, List<String> constraintArray) {
|
||||||
|
- for (String constraintEntry : constraintArray) {
|
||||||
|
+ public Constraints(String propertyName, Set<String> constraintSet) {
|
||||||
|
+ for (String constraintEntry : constraintSet) {
|
||||||
|
if (constraintEntry == null || constraintEntry.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
diff --git a/src/java.base/share/classes/sun/security/util/LegacyAlgorithmConstraints.java b/src/java.base/share/classes/sun/security/util/LegacyAlgorithmConstraints.java
|
||||||
|
index e4e5cedc1..550173080 100644
|
||||||
|
--- a/src/java.base/share/classes/sun/security/util/LegacyAlgorithmConstraints.java
|
||||||
|
+++ b/src/java.base/share/classes/sun/security/util/LegacyAlgorithmConstraints.java
|
||||||
|
@@ -40,7 +40,7 @@ public class LegacyAlgorithmConstraints extends AbstractAlgorithmConstraints {
|
||||||
|
public static final String PROPERTY_TLS_LEGACY_ALGS =
|
||||||
|
"jdk.tls.legacyAlgorithms";
|
||||||
|
|
||||||
|
- private final List<String> legacyAlgorithms;
|
||||||
|
+ private final Set<String> legacyAlgorithms;
|
||||||
|
|
||||||
|
public LegacyAlgorithmConstraints(String propertyName,
|
||||||
|
AlgorithmDecomposer decomposer) {
|
||||||
|
diff --git a/test/micro/org/openjdk/bench/java/security/AlgorithmConstraintsPermits.java b/test/micro/org/openjdk/bench/java/security/AlgorithmConstraintsPermits.java
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000..3cb9567b9
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/test/micro/org/openjdk/bench/java/security/AlgorithmConstraintsPermits.java
|
||||||
|
@@ -0,0 +1,66 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (c) 2021, Huawei Technologies Co., Ltd. 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.
|
||||||
|
+ */
|
||||||
|
+package org.openjdk.bench.java.security;
|
||||||
|
+
|
||||||
|
+import org.openjdk.jmh.annotations.Benchmark;
|
||||||
|
+import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||||
|
+import org.openjdk.jmh.annotations.Fork;
|
||||||
|
+import org.openjdk.jmh.annotations.Mode;
|
||||||
|
+import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||||
|
+import org.openjdk.jmh.annotations.Param;
|
||||||
|
+import org.openjdk.jmh.annotations.Scope;
|
||||||
|
+import org.openjdk.jmh.annotations.Setup;
|
||||||
|
+import org.openjdk.jmh.annotations.State;
|
||||||
|
+import sun.security.util.DisabledAlgorithmConstraints;
|
||||||
|
+
|
||||||
|
+import java.security.AlgorithmConstraints;
|
||||||
|
+import java.security.CryptoPrimitive;
|
||||||
|
+import java.util.concurrent.TimeUnit;
|
||||||
|
+import java.util.EnumSet;
|
||||||
|
+import java.util.Set;
|
||||||
|
+
|
||||||
|
+import static sun.security.util.DisabledAlgorithmConstraints.PROPERTY_TLS_DISABLED_ALGS;
|
||||||
|
+
|
||||||
|
+@BenchmarkMode(Mode.AverageTime)
|
||||||
|
+@OutputTimeUnit(TimeUnit.NANOSECONDS)
|
||||||
|
+@Fork(jvmArgsAppend = {"--add-exports", "java.base/sun.security.util=ALL-UNNAMED"})
|
||||||
|
+@State(Scope.Thread)
|
||||||
|
+public class AlgorithmConstraintsPermits {
|
||||||
|
+
|
||||||
|
+ AlgorithmConstraints tlsDisabledAlgConstraints;
|
||||||
|
+ Set<CryptoPrimitive> primitives = EnumSet.of(CryptoPrimitive.KEY_AGREEMENT);
|
||||||
|
+
|
||||||
|
+ @Param({"SSLv3", "DES", "NULL", "TLS1.3"})
|
||||||
|
+ String algorithm;
|
||||||
|
+
|
||||||
|
+ @Setup
|
||||||
|
+ public void setup() {
|
||||||
|
+ tlsDisabledAlgConstraints = new DisabledAlgorithmConstraints(PROPERTY_TLS_DISABLED_ALGS);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Benchmark
|
||||||
|
+ public boolean permits() {
|
||||||
|
+ return tlsDisabledAlgConstraints.permits(primitives, algorithm, null);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
--
|
||||||
|
2.22.0
|
||||||
|
|
||||||
11284
Add-KAE-implementation.patch
Executable file
11284
Add-KAE-implementation.patch
Executable file
File diff suppressed because it is too large
Load Diff
65
Update-algorithm-annotations-for-fill_words.patch
Executable file
65
Update-algorithm-annotations-for-fill_words.patch
Executable file
@ -0,0 +1,65 @@
|
|||||||
|
From 861eff79eafc35ac88bbeb1b0edb7269c54ac807 Mon Sep 17 00:00:00 2001
|
||||||
|
From: miaozhuojun <mouzhuojun@huawei.com>
|
||||||
|
Date: Wed, 4 Aug 2021 15:22:25 +0800
|
||||||
|
Subject: [PATCH 1/8] Update algorithm annotations for fill_words
|
||||||
|
|
||||||
|
Summary: <JDK>: update algorithm annotations for fill_words
|
||||||
|
LLT: NA
|
||||||
|
Patch Type: huawei
|
||||||
|
Bug url: NA
|
||||||
|
---
|
||||||
|
.../cpu/aarch64/macroAssembler_aarch64.cpp | 28 ++++++++++++++-----
|
||||||
|
1 file changed, 21 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
|
||||||
|
index 60dc92953..1401b8627 100644
|
||||||
|
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
|
||||||
|
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
|
||||||
|
@@ -5658,23 +5658,37 @@ void MacroAssembler::fill_words(Register base, Register cnt, Register value)
|
||||||
|
{
|
||||||
|
// Algorithm:
|
||||||
|
//
|
||||||
|
-// scratch1 = cnt & 7;
|
||||||
|
+// if (cnt == 0) {
|
||||||
|
+// return;
|
||||||
|
+// }
|
||||||
|
+// if ((p & 8) != 0) {
|
||||||
|
+// *p++ = v;
|
||||||
|
+// }
|
||||||
|
+//
|
||||||
|
+// scratch1 = cnt & 14;
|
||||||
|
// cnt -= scratch1;
|
||||||
|
// p += scratch1;
|
||||||
|
-// switch (scratch1) {
|
||||||
|
+// switch (scratch1 / 2) {
|
||||||
|
// do {
|
||||||
|
-// cnt -= 8;
|
||||||
|
-// p[-8] = v;
|
||||||
|
+// cnt -= 16;
|
||||||
|
+// p[-16] = v;
|
||||||
|
+// p[-15] = v;
|
||||||
|
// case 7:
|
||||||
|
-// p[-7] = v;
|
||||||
|
+// p[-14] = v;
|
||||||
|
+// p[-13] = v;
|
||||||
|
// case 6:
|
||||||
|
-// p[-6] = v;
|
||||||
|
+// p[-12] = v;
|
||||||
|
+// p[-11] = v;
|
||||||
|
// // ...
|
||||||
|
// case 1:
|
||||||
|
+// p[-2] = v;
|
||||||
|
// p[-1] = v;
|
||||||
|
// case 0:
|
||||||
|
-// p += 8;
|
||||||
|
+// p += 16;
|
||||||
|
// } while (cnt);
|
||||||
|
+// }
|
||||||
|
+// if ((cnt & 1) == 1) {
|
||||||
|
+// *p++ = v;
|
||||||
|
// }
|
||||||
|
|
||||||
|
assert_different_registers(base, cnt, value, rscratch1, rscratch2);
|
||||||
|
--
|
||||||
|
2.22.0
|
||||||
|
|
||||||
111
create-jfr-dump-file-with-pid-or-timestamp-if-specif.patch
Executable file
111
create-jfr-dump-file-with-pid-or-timestamp-if-specif.patch
Executable file
@ -0,0 +1,111 @@
|
|||||||
|
From fcf556744f9597ddd58c8103bf49bc992401feca Mon Sep 17 00:00:00 2001
|
||||||
|
From: hubodao <hubodao@huawei.com>
|
||||||
|
Date: Sat, 11 Sep 2021 09:47:21 +0800
|
||||||
|
Subject: [PATCH 4/8] create jfr dump file with pid or timestamp if specified
|
||||||
|
|
||||||
|
Summary: <JFR> : create jfr dump file with pid or timestamp if specified
|
||||||
|
LLT: NA
|
||||||
|
Patch Type: huawei
|
||||||
|
Bug url: NA
|
||||||
|
---
|
||||||
|
src/hotspot/share/jfr/dcmd/jfrDcmds.cpp | 16 ++++++++++++++--
|
||||||
|
src/hotspot/share/utilities/ostream.cpp | 2 +-
|
||||||
|
src/hotspot/share/utilities/ostream.hpp | 2 +-
|
||||||
|
.../jdk/jfr/jcmd/TestJcmdDumpWithFileName.java | 16 ++++++++++++++++
|
||||||
|
4 files changed, 32 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/jfr/dcmd/jfrDcmds.cpp b/src/hotspot/share/jfr/dcmd/jfrDcmds.cpp
|
||||||
|
index 4aa5c56f3..b1c5df029 100644
|
||||||
|
--- a/src/hotspot/share/jfr/dcmd/jfrDcmds.cpp
|
||||||
|
+++ b/src/hotspot/share/jfr/dcmd/jfrDcmds.cpp
|
||||||
|
@@ -230,7 +230,13 @@ void JfrDumpFlightRecordingDCmd::execute(DCmdSource source, TRAPS) {
|
||||||
|
|
||||||
|
jstring filepath = NULL;
|
||||||
|
if (_filename.is_set() && _filename.value() != NULL) {
|
||||||
|
- filepath = JfrJavaSupport::new_string(_filename.value(), CHECK);
|
||||||
|
+ const char* extended_path = make_log_name(_filename.value(), NULL);
|
||||||
|
+ if (extended_path != NULL) {
|
||||||
|
+ filepath = JfrJavaSupport::new_string(extended_path, CHECK);
|
||||||
|
+ FREE_C_HEAP_ARRAY(char, extended_path);
|
||||||
|
+ } else {
|
||||||
|
+ filepath = JfrJavaSupport::new_string(_filename.value(), CHECK);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
jobject maxage = NULL;
|
||||||
|
@@ -398,7 +404,13 @@ void JfrStartFlightRecordingDCmd::execute(DCmdSource source, TRAPS) {
|
||||||
|
|
||||||
|
jstring filename = NULL;
|
||||||
|
if (_filename.is_set() && _filename.value() != NULL) {
|
||||||
|
- filename = JfrJavaSupport::new_string(_filename.value(), CHECK);
|
||||||
|
+ const char *dumpPath = make_log_name(_filename.value(), NULL);
|
||||||
|
+ if (dumpPath != NULL) {
|
||||||
|
+ filename = JfrJavaSupport::new_string(dumpPath, CHECK);
|
||||||
|
+ FREE_C_HEAP_ARRAY(char, dumpPath);
|
||||||
|
+ } else {
|
||||||
|
+ filename = JfrJavaSupport::new_string(_filename.value(), CHECK);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
jobject maxage = NULL;
|
||||||
|
diff --git a/src/hotspot/share/utilities/ostream.cpp b/src/hotspot/share/utilities/ostream.cpp
|
||||||
|
index eb8ee4de1..0aabe8e8f 100644
|
||||||
|
--- a/src/hotspot/share/utilities/ostream.cpp
|
||||||
|
+++ b/src/hotspot/share/utilities/ostream.cpp
|
||||||
|
@@ -528,7 +528,7 @@ static const char* make_log_name_internal(const char* log_name, const char* forc
|
||||||
|
// -XX:DumpLoadedClassList=<file_name>
|
||||||
|
// in log_name, %p => pid1234 and
|
||||||
|
// %t => YYYY-MM-DD_HH-MM-SS
|
||||||
|
-static const char* make_log_name(const char* log_name, const char* force_directory) {
|
||||||
|
+const char* make_log_name(const char* log_name, const char* force_directory) {
|
||||||
|
char timestr[32];
|
||||||
|
get_datetime_string(timestr, sizeof(timestr));
|
||||||
|
return make_log_name_internal(log_name, force_directory, os::current_process_id(),
|
||||||
|
diff --git a/src/hotspot/share/utilities/ostream.hpp b/src/hotspot/share/utilities/ostream.hpp
|
||||||
|
index fe38c2f3e..e2a8a621c 100644
|
||||||
|
--- a/src/hotspot/share/utilities/ostream.hpp
|
||||||
|
+++ b/src/hotspot/share/utilities/ostream.hpp
|
||||||
|
@@ -309,5 +309,5 @@ class networkStream : public bufferedStream {
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
-
|
||||||
|
+const char* make_log_name(const char* log_name, const char* force_directory);
|
||||||
|
#endif // SHARE_VM_UTILITIES_OSTREAM_HPP
|
||||||
|
diff --git a/test/jdk/jdk/jfr/jcmd/TestJcmdDumpWithFileName.java b/test/jdk/jdk/jfr/jcmd/TestJcmdDumpWithFileName.java
|
||||||
|
index 691e53174..cead3a0e7 100644
|
||||||
|
--- a/test/jdk/jdk/jfr/jcmd/TestJcmdDumpWithFileName.java
|
||||||
|
+++ b/test/jdk/jdk/jfr/jcmd/TestJcmdDumpWithFileName.java
|
||||||
|
@@ -47,6 +47,7 @@ public class TestJcmdDumpWithFileName {
|
||||||
|
testDumpAll();
|
||||||
|
testDumpNamed();
|
||||||
|
testDumpNamedWithFilename();
|
||||||
|
+ testDumpNamedWithFilenameExpansion();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void testDumpAll() throws Exception {
|
||||||
|
@@ -96,6 +97,21 @@ public class TestJcmdDumpWithFileName {
|
||||||
|
cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ private static void testDumpNamedWithFilenameExpansion() throws Exception {
|
||||||
|
+ long pid = ProcessHandle.current().pid();
|
||||||
|
+ Path dumpPath = Path.of("dumpPath-%p-%t.jfr").toAbsolutePath();
|
||||||
|
+ try (Recording r = new Recording()) {
|
||||||
|
+ r.setName("testDumpNamedWithFilenameExpansion");
|
||||||
|
+ r.setDestination(dumpPath);
|
||||||
|
+ r.start();
|
||||||
|
+ JcmdHelper.jcmd("JFR.dump", "name=testDumpNamedWithFilenameExpansion", "filename=" + dumpPath.toString());
|
||||||
|
+ Stream<Path> stream = Files.find(Path.of("."), 1, (s, a) -> s.toString()
|
||||||
|
+ .matches("^.*dumpPath-pid" + pid + ".\\d{4}.\\d{2}.\\d{2}.\\d{2}.\\d{2}.\\d{2}" + ".jfr") && (a.size() > 0L));
|
||||||
|
+ Asserts.assertTrue(stream.findAny().isPresent());
|
||||||
|
+ }
|
||||||
|
+ cleanup();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
private static boolean namedFile(Path dumpFile) throws IOException {
|
||||||
|
return Files.exists(dumpFile) && (Files.size(dumpFile) > 0);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.22.0
|
||||||
|
|
||||||
71
enhance-the-TimeZone-s-path-solution-on-Euler.patch
Executable file
71
enhance-the-TimeZone-s-path-solution-on-Euler.patch
Executable file
@ -0,0 +1,71 @@
|
|||||||
|
From f7e762f525098e19b0f0e9ea8dc2c4a31cae607a Mon Sep 17 00:00:00 2001
|
||||||
|
From: s00478819 <sunjianye@huawei.com>
|
||||||
|
Date: Sat, 11 Sep 2021 11:42:19 +0800
|
||||||
|
Subject: [PATCH 6/8] enhance the TimeZone's path solution on Euler
|
||||||
|
|
||||||
|
Summary: <JDK>: enhance the TimeZone's path solution on Euler
|
||||||
|
LLT: NA
|
||||||
|
Patch Type: huawei
|
||||||
|
Bug url: NA
|
||||||
|
---
|
||||||
|
.../unix/native/libjava/TimeZone_md.c | 33 ++++++++++++++++++-
|
||||||
|
1 file changed, 32 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/java.base/unix/native/libjava/TimeZone_md.c b/src/java.base/unix/native/libjava/TimeZone_md.c
|
||||||
|
index bb3ba99d5..0780c3601 100644
|
||||||
|
--- a/src/java.base/unix/native/libjava/TimeZone_md.c
|
||||||
|
+++ b/src/java.base/unix/native/libjava/TimeZone_md.c
|
||||||
|
@@ -67,10 +67,12 @@ static char *isFileIdentical(char* buf, size_t size, char *pathname);
|
||||||
|
static const char *ETC_TIMEZONE_FILE = "/etc/timezone";
|
||||||
|
static const char *ZONEINFO_DIR = "/usr/share/zoneinfo";
|
||||||
|
static const char *DEFAULT_ZONEINFO_FILE = "/etc/localtime";
|
||||||
|
+static const char *DEFAULT_ZONEINFO_FILE_DIRNAME = "/etc";
|
||||||
|
#else
|
||||||
|
static const char *SYS_INIT_FILE = "/etc/default/init";
|
||||||
|
static const char *ZONEINFO_DIR = "/usr/share/lib/zoneinfo";
|
||||||
|
static const char *DEFAULT_ZONEINFO_FILE = "/usr/share/lib/zoneinfo/localtime";
|
||||||
|
+static const char *DEFAULT_ZONEINFO_FILE_DIRNAME = "/usr/share/lib/zoneinfo";
|
||||||
|
#endif /* defined(__linux__) || defined(_ALLBSD_SOURCE) */
|
||||||
|
|
||||||
|
static const char popularZones[][4] = {"UTC", "GMT"};
|
||||||
|
@@ -310,7 +312,36 @@ getPlatformTimeZoneID()
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
linkbuf[len] = '\0';
|
||||||
|
- tz = getZoneName(linkbuf);
|
||||||
|
+
|
||||||
|
+ /* linkbuf may be a relative symlink or has more than one characters, like '.' and '/' ,
|
||||||
|
+ * which will cause the function call getZoneName return to an abnormal timeZone name.
|
||||||
|
+ * For example, linkbuf is "../usr/share/zoneinfo//Asia/Shanghai", then the call of
|
||||||
|
+ * getZoneName(linkbuf) will get "/Asia/Shanghai", not "Asia/Shanghai".
|
||||||
|
+ * So we covert it to an absolute path by adding the file's (which is define by macro
|
||||||
|
+ * DEFAULT_ZONEINFO_FILE) dirname and then call glibc's realpath API to canonicalize
|
||||||
|
+ * the path.
|
||||||
|
+ */
|
||||||
|
+ char abslinkbuf[2 * (PATH_MAX + 1)];
|
||||||
|
+ if (linkbuf[0] != '/') {
|
||||||
|
+ if (sprintf(abslinkbuf, "%s/%s", DEFAULT_ZONEINFO_FILE_DIRNAME, linkbuf) < 0) {
|
||||||
|
+ jio_fprintf(stderr, (const char *) "failed to generate absolute path\n");
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ strncpy(abslinkbuf, linkbuf, len + 1);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* canonicalize the path */
|
||||||
|
+ char resolvedpath[PATH_MAX + 1];
|
||||||
|
+ resolvedpath[PATH_MAX] = '\0';
|
||||||
|
+ char *path = realpath(abslinkbuf, resolvedpath);
|
||||||
|
+ if (path == NULL) {
|
||||||
|
+ jio_fprintf(stderr, (const char *) "failed to get real path, symlink is %s\n",
|
||||||
|
+ abslinkbuf);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ tz = getZoneName(resolvedpath);
|
||||||
|
if (tz != NULL) {
|
||||||
|
tz = strdup(tz);
|
||||||
|
return tz;
|
||||||
|
--
|
||||||
|
2.22.0
|
||||||
|
|
||||||
@ -740,7 +740,7 @@ Provides: java-src%{?1} = %{epoch}:%{version}-%{release}
|
|||||||
|
|
||||||
Name: java-%{javaver}-%{origin}
|
Name: java-%{javaver}-%{origin}
|
||||||
Version: %{newjavaver}.%{buildver}
|
Version: %{newjavaver}.%{buildver}
|
||||||
Release: 1
|
Release: 2
|
||||||
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons
|
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons
|
||||||
# and this change was brought into RHEL-4. java-1.5.0-ibm packages
|
# and this change was brought into RHEL-4. java-1.5.0-ibm packages
|
||||||
# also included the epoch in their virtual provides. This created a
|
# also included the epoch in their virtual provides. This created a
|
||||||
@ -856,6 +856,12 @@ Patch74: delete_expired_certificates.patch
|
|||||||
|
|
||||||
# 11.0.12
|
# 11.0.12
|
||||||
Patch75: 8247691-Incorrect-handling-of-VM-exceptions-in-C1-deopt-stub.patch
|
Patch75: 8247691-Incorrect-handling-of-VM-exceptions-in-C1-deopt-stub.patch
|
||||||
|
Patch76: Update-algorithm-annotations-for-fill_words.patch
|
||||||
|
Patch77: 8257145-Performance-regression-with-XX-ResizePLAB-af.patch
|
||||||
|
Patch78: create-jfr-dump-file-with-pid-or-timestamp-if-specif.patch
|
||||||
|
Patch79: enhance-the-TimeZone-s-path-solution-on-Euler.patch
|
||||||
|
Patch80: Add-KAE-implementation.patch
|
||||||
|
Patch81: 8268427-Improve-AlgorithmConstraints-checkAlgorithm-.patch
|
||||||
|
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: alsa-lib-devel
|
BuildRequires: alsa-lib-devel
|
||||||
@ -1131,6 +1137,12 @@ pushd %{top_level_dir_name}
|
|||||||
%patch73 -p1
|
%patch73 -p1
|
||||||
%patch74 -p1
|
%patch74 -p1
|
||||||
%patch75 -p1
|
%patch75 -p1
|
||||||
|
%patch76 -p1
|
||||||
|
%patch77 -p1
|
||||||
|
%patch78 -p1
|
||||||
|
%patch79 -p1
|
||||||
|
%patch80 -p1
|
||||||
|
%patch81 -p1
|
||||||
popd # openjdk
|
popd # openjdk
|
||||||
|
|
||||||
# %patch1000
|
# %patch1000
|
||||||
@ -1633,6 +1645,14 @@ require "copy_jdk_configs.lua"
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Sep 17 2021 kuenking111 <wangkun49@huawei.com> - 1:11.0.12.7-2
|
||||||
|
- add Update-algorithm-annotations-for-fill_words.patch
|
||||||
|
- add 8257145-Performance-regression-with-XX-ResizePLAB-af.patch
|
||||||
|
- add create-jfr-dump-file-with-pid-or-timestamp-if-specif.patch
|
||||||
|
- add enhance-the-TimeZone-s-path-solution-on-Euler.patch
|
||||||
|
- add Add-KAE-implementation.patch
|
||||||
|
- add 8268427-Improve-AlgorithmConstraints-checkAlgorithm-.patch
|
||||||
|
|
||||||
* Tue Aug 17 2021 eapen <zhangyipeng7@huawei.com> - 1:11.0.12.7-1
|
* Tue Aug 17 2021 eapen <zhangyipeng7@huawei.com> - 1:11.0.12.7-1
|
||||||
- add 8247691-Incorrect-handling-of-VM-exceptions-in-C1-deopt-stub.patch
|
- add 8247691-Incorrect-handling-of-VM-exceptions-in-C1-deopt-stub.patch
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user