Skip to content

Commit 8359153

Browse files
committed
Merge branch 'master' into JDK-8354084
2 parents 4f26a48 + 84458ec commit 8359153

File tree

305 files changed

+11536
-168791
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

305 files changed

+11536
-168791
lines changed

make/RunTests.gmk

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -534,22 +534,21 @@ define SetupRunGtestTestBody
534534
$$(eval $1_PASSED := $$(shell $$(AWK) '/\[ PASSED \] .* tests?./ \
535535
{ print $$$$4 }' $$($1_RESULT_FILE))) \
536536
$$(if $$($1_PASSED), , $$(eval $1_PASSED := 0)) \
537-
$$(eval $1_SKIPPED := $$(shell $$(AWK) \
538-
'/YOU HAVE [0-9]+ DISABLED TEST/ { \
539-
if (match($$$$0, /[0-9]+/, arr)) { \
540-
print arr[0]; \
541-
found=1; \
542-
} \
543-
} \
544-
END { if (!found) print 0; }' \
545-
$$($1_RESULT_FILE))) \
537+
$$(eval $1_GTEST_DISABLED := $$(shell $$(AWK) '/YOU HAVE .* DISABLED TEST/ \
538+
{ print $$$$3 }' $$($1_RESULT_FILE))) \
539+
$$(if $$($1_GTEST_DISABLED), , $$(eval $1_GTEST_DISABLED := 0)) \
540+
$$(eval $1_GTEST_SKIPPED := $$(shell $$(AWK) '/\[ SKIPPED \] .* tests?.*/ \
541+
{ print $$$$4 }' $$($1_RESULT_FILE))) \
542+
$$(if $$($1_GTEST_SKIPPED), , $$(eval $1_GTEST_SKIPPED := 0)) \
543+
$$(eval $1_SKIPPED := $$(shell \
544+
$$(EXPR) $$($1_GTEST_DISABLED) + $$($1_GTEST_SKIPPED))) \
546545
$$(eval $1_FAILED := $$(shell $$(AWK) '/\[ FAILED \] .* tests?, \
547546
listed below/ { print $$$$4 }' $$($1_RESULT_FILE))) \
548547
$$(if $$($1_FAILED), , $$(eval $1_FAILED := 0)) \
549548
$$(eval $1_ERROR := $$(shell \
550-
$$(EXPR) $$($1_RUN) - $$($1_PASSED) - $$($1_FAILED))) \
549+
$$(EXPR) $$($1_RUN) - $$($1_PASSED) - $$($1_FAILED) - $$($1_GTEST_SKIPPED))) \
551550
$$(eval $1_TOTAL := $$(shell \
552-
$$(EXPR) $$($1_RUN) + $$($1_SKIPPED))) \
551+
$$(EXPR) $$($1_RUN) + $$($1_GTEST_DISABLED))) \
553552
, \
554553
$$(eval $1_PASSED := 0) \
555554
$$(eval $1_FAILED := 0) \

make/autoconf/basic_tools.m4

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,15 @@ AC_DEFUN_ONCE([BASIC_SETUP_PANDOC],
468468
AC_MSG_CHECKING([if the pandoc smart extension needs to be disabled for markdown])
469469
if $PANDOC --list-extensions | $GREP -q '+smart'; then
470470
AC_MSG_RESULT([yes])
471-
PANDOC_MARKDOWN_FLAG="markdown-smart"
471+
PANDOC_MARKDOWN_FLAG="$PANDOC_MARKDOWN_FLAG-smart"
472+
else
473+
AC_MSG_RESULT([no])
474+
fi
475+
476+
AC_MSG_CHECKING([if the pandoc tex_math_dollars extension needs to be disabled for markdown])
477+
if $PANDOC --list-extensions | $GREP -q '+tex_math_dollars'; then
478+
AC_MSG_RESULT([yes])
479+
PANDOC_MARKDOWN_FLAG="$PANDOC_MARKDOWN_FLAG-tex_math_dollars"
472480
else
473481
AC_MSG_RESULT([no])
474482
fi

make/autoconf/flags-cflags.m4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,7 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
721721
$1_CFLAGS_CPU="-fsigned-char -Wno-psabi $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS -DJDK_ARCH_ABI_PROP_NAME='\"\$(JDK_ARCH_ABI_PROP_NAME)\"'"
722722
$1_CFLAGS_CPU_JVM="-DARM"
723723
elif test "x$FLAGS_CPU_ARCH" = xppc; then
724-
$1_CFLAGS_CPU_JVM="-minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
724+
$1_CFLAGS_CPU_JVM="-mno-multiple -mno-string"
725725
if test "x$FLAGS_CPU" = xppc64; then
726726
# -mminimal-toc fixes `relocation truncated to fit' error for gcc 4.1.
727727
# Use ppc64 instructions, but schedule for power5

make/modules/jdk.jlink/Java.gmk

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#
2+
# Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
3+
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
#
5+
# This code is free software; you can redistribute it and/or modify it
6+
# under the terms of the GNU General Public License version 2 only, as
7+
# published by the Free Software Foundation. Oracle designates this
8+
# particular file as subject to the "Classpath" exception as provided
9+
# by Oracle in the LICENSE file that accompanied this code.
10+
#
11+
# This code is distributed in the hope that it will be useful, but WITHOUT
12+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+
# version 2 for more details (a copy is included in the LICENSE file that
15+
# accompanied this code).
16+
#
17+
# You should have received a copy of the GNU General Public License version
18+
# 2 along with this work; if not, write to the Free Software Foundation,
19+
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+
#
21+
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+
# or visit www.oracle.com if you need additional information or have any
23+
# questions.
24+
#
25+
26+
################################################################################
27+
28+
# Instruct SetupJavaCompilation for the jdk.jlink module to include
29+
# upgrade_files_<module-name>.conf files
30+
COPY += .conf
31+
32+
################################################################################

src/demo/share/jfc/CodePointIM/com/sun/inputmethods/internal/codepointim/CodePointInputMethodDescriptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public CodePointInputMethodDescriptor() {
6363
* Creates a new instance of the Code Point input method.
6464
*
6565
* @return a new instance of the Code Point input method
66-
* @exception Exception any exception that may occur while creating the
66+
* @throws Exception any exception that may occur while creating the
6767
* input method instance
6868
*/
6969
public InputMethod createInputMethod() throws Exception {

src/hotspot/cpu/aarch64/register_aarch64.cpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -58,23 +58,3 @@ const char* PRegister::PRegisterImpl::name() const {
5858
};
5959
return is_valid() ? names[encoding()] : "pnoreg";
6060
}
61-
62-
// convenience methods for splitting 8-way vector register sequences
63-
// in half -- needed because vector operations can normally only be
64-
// benefit from 4-way instruction parallelism
65-
66-
VSeq<4> vs_front(const VSeq<8>& v) {
67-
return VSeq<4>(v.base(), v.delta());
68-
}
69-
70-
VSeq<4> vs_back(const VSeq<8>& v) {
71-
return VSeq<4>(v.base() + 4 * v.delta(), v.delta());
72-
}
73-
74-
VSeq<4> vs_even(const VSeq<8>& v) {
75-
return VSeq<4>(v.base(), v.delta() * 2);
76-
}
77-
78-
VSeq<4> vs_odd(const VSeq<8>& v) {
79-
return VSeq<4>(v.base() + 1, v.delta() * 2);
80-
}

src/hotspot/cpu/aarch64/register_aarch64.hpp

Lines changed: 78 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -436,19 +436,20 @@ enum RC { rc_bad, rc_int, rc_float, rc_predicate, rc_stack };
436436
// inputs into front and back halves or odd and even halves (see
437437
// convenience methods below).
438438

439+
// helper macro for computing register masks
440+
#define VS_MASK_BIT(base, delta, i) (1 << (base + delta * i))
441+
439442
template<int N> class VSeq {
440443
static_assert(N >= 2, "vector sequence length must be greater than 1");
441-
static_assert(N <= 8, "vector sequence length must not exceed 8");
442-
static_assert((N & (N - 1)) == 0, "vector sequence length must be power of two");
443444
private:
444445
int _base; // index of first register in sequence
445446
int _delta; // increment to derive successive indices
446447
public:
447448
VSeq(FloatRegister base_reg, int delta = 1) : VSeq(base_reg->encoding(), delta) { }
448449
VSeq(int base, int delta = 1) : _base(base), _delta(delta) {
449-
assert (_base >= 0, "invalid base register");
450-
assert (_delta >= 0, "invalid register delta");
451-
assert ((_base + (N - 1) * _delta) < 32, "range exceeded");
450+
assert (_base >= 0 && _base <= 31, "invalid base register");
451+
assert ((_base + (N - 1) * _delta) >= 0, "register range underflow");
452+
assert ((_base + (N - 1) * _delta) < 32, "register range overflow");
452453
}
453454
// indexed access to sequence
454455
FloatRegister operator [](int i) const {
@@ -457,27 +458,89 @@ template<int N> class VSeq {
457458
}
458459
int mask() const {
459460
int m = 0;
460-
int bit = 1 << _base;
461461
for (int i = 0; i < N; i++) {
462-
m |= bit << (i * _delta);
462+
m |= VS_MASK_BIT(_base, _delta, i);
463463
}
464464
return m;
465465
}
466466
int base() const { return _base; }
467467
int delta() const { return _delta; }
468+
bool is_constant() const { return _delta == 0; }
468469
};
469470

470-
// declare convenience methods for splitting vector register sequences
471-
472-
VSeq<4> vs_front(const VSeq<8>& v);
473-
VSeq<4> vs_back(const VSeq<8>& v);
474-
VSeq<4> vs_even(const VSeq<8>& v);
475-
VSeq<4> vs_odd(const VSeq<8>& v);
476-
477-
// methods for use in asserts to check VSeq inputs and oupts are
471+
// methods for use in asserts to check VSeq inputs and outputs are
478472
// either disjoint or equal
479473

480474
template<int N, int M> bool vs_disjoint(const VSeq<N>& n, const VSeq<M>& m) { return (n.mask() & m.mask()) == 0; }
481475
template<int N> bool vs_same(const VSeq<N>& n, const VSeq<N>& m) { return n.mask() == m.mask(); }
482476

477+
// method for use in asserts to check whether registers appearing in
478+
// an output sequence will be written before they are read from an
479+
// input sequence.
480+
481+
template<int N> bool vs_write_before_read(const VSeq<N>& vout, const VSeq<N>& vin) {
482+
int b_in = vin.base();
483+
int d_in = vin.delta();
484+
int b_out = vout.base();
485+
int d_out = vout.delta();
486+
int bit_in = 1 << b_in;
487+
int bit_out = 1 << b_out;
488+
int mask_read = vin.mask(); // all pending reads
489+
int mask_write = 0; // no writes as yet
490+
491+
492+
for (int i = 0; i < N - 1; i++) {
493+
// check whether a pending read clashes with a write
494+
if ((mask_write & mask_read) != 0) {
495+
return true;
496+
}
497+
// remove the pending input (so long as this is a constant
498+
// sequence)
499+
if (d_in != 0) {
500+
mask_read ^= VS_MASK_BIT(b_in, d_in, i);
501+
}
502+
// record the next write
503+
mask_write |= VS_MASK_BIT(b_out, d_out, i);
504+
}
505+
// no write before read
506+
return false;
507+
}
508+
509+
// convenience methods for splitting 8-way or 4-way vector register
510+
// sequences in half -- needed because vector operations can normally
511+
// benefit from 4-way instruction parallelism or, occasionally, 2-way
512+
// parallelism
513+
514+
template<int N>
515+
VSeq<N/2> vs_front(const VSeq<N>& v) {
516+
static_assert(N > 0 && ((N & 1) == 0), "sequence length must be even");
517+
return VSeq<N/2>(v.base(), v.delta());
518+
}
519+
520+
template<int N>
521+
VSeq<N/2> vs_back(const VSeq<N>& v) {
522+
static_assert(N > 0 && ((N & 1) == 0), "sequence length must be even");
523+
return VSeq<N/2>(v.base() + N / 2 * v.delta(), v.delta());
524+
}
525+
526+
template<int N>
527+
VSeq<N/2> vs_even(const VSeq<N>& v) {
528+
static_assert(N > 0 && ((N & 1) == 0), "sequence length must be even");
529+
return VSeq<N/2>(v.base(), v.delta() * 2);
530+
}
531+
532+
template<int N>
533+
VSeq<N/2> vs_odd(const VSeq<N>& v) {
534+
static_assert(N > 0 && ((N & 1) == 0), "sequence length must be even");
535+
return VSeq<N/2>(v.base() + v.delta(), v.delta() * 2);
536+
}
537+
538+
// convenience method to construct a vector register sequence that
539+
// indexes its elements in reverse order to the original
540+
541+
template<int N>
542+
VSeq<N> vs_reverse(const VSeq<N>& v) {
543+
return VSeq<N>(v.base() + (N - 1) * v.delta(), -v.delta());
544+
}
545+
483546
#endif // CPU_AARCH64_REGISTER_AARCH64_HPP

src/hotspot/cpu/aarch64/stubDeclarations_aarch64.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
do_arch_blob, \
4545
do_arch_entry, \
4646
do_arch_entry_init) \
47-
do_arch_blob(compiler, 55000 ZGC_ONLY(+5000)) \
47+
do_arch_blob(compiler, 75000 ZGC_ONLY(+5000)) \
4848
do_stub(compiler, vector_iota_indices) \
4949
do_arch_entry(aarch64, compiler, vector_iota_indices, \
5050
vector_iota_indices, vector_iota_indices) \

0 commit comments

Comments
 (0)