Skip to content

Commit

Permalink
Merge jdk
Browse files Browse the repository at this point in the history
Merge jdk-22+14

Co-authored-by: Tobias Hartmann <[email protected]>
  • Loading branch information
David Simms and TobiHartmann committed Nov 16, 2023
2 parents 481893b + 024133b commit 24e0c05
Show file tree
Hide file tree
Showing 347 changed files with 11,138 additions and 3,864 deletions.
6 changes: 3 additions & 3 deletions make/Main.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -1431,13 +1431,13 @@ ALL_TARGETS += $(addsuffix -only, $(filter-out dist-clean clean%, $(ALL_TARGETS)
# are internal only, to support Init.gmk.

print-targets:
@$(ECHO) $(sort $(ALL_TARGETS))
$(info $(subst $(SPACE),$(NEWLINE),$(sort $(ALL_TARGETS))))

print-modules:
@$(ECHO) $(sort $(ALL_MODULES))
$(info $(subst $(SPACE),$(NEWLINE),$(sort $(ALL_MODULES))))

print-tests:
@$(ECHO) $(sort $(ALL_NAMED_TESTS))
$(info $(subst $(SPACE),$(NEWLINE),$(sort $(ALL_NAMED_TESTS))))

create-main-targets-include:
$(call LogInfo, Generating main target list)
Expand Down
8 changes: 5 additions & 3 deletions make/autoconf/lib-x11.m4
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 2023, 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
Expand Down Expand Up @@ -35,6 +35,7 @@ AC_DEFUN_ONCE([LIB_SETUP_X11],
X_CFLAGS=
X_LIBS=
else
x_libraries_orig="$x_libraries"
if test "x${with_x}" = xno; then
AC_MSG_ERROR([It is not possible to disable the use of X11. Remove the --without-x option.])
Expand All @@ -48,6 +49,7 @@ AC_DEFUN_ONCE([LIB_SETUP_X11],
fi
if test "x$x_libraries" = xNONE; then
x_libraries="${with_x}/lib"
x_libraries_orig="$x_libraries"
fi
else
# Check if the user has specified sysroot, but not --with-x, --x-includes or --x-libraries.
Expand Down Expand Up @@ -82,8 +84,8 @@ AC_DEFUN_ONCE([LIB_SETUP_X11],
AC_PATH_XTRA
# AC_PATH_XTRA creates X_LIBS and sometimes adds -R flags. When cross compiling
# this doesn't make sense so we remove it.
if test "x$COMPILE_TYPE" = xcross; then
# this doesn't make sense so we remove it; same for sysroot (devkit).
if test "x$COMPILE_TYPE" = xcross || (test "x$SYSROOT" != "x" && test "x$x_libraries_orig" = xNONE); then
X_LIBS=`$ECHO $X_LIBS | $SED 's/-R \{0,1\}[[^ ]]*//g'`
fi
Expand Down
4 changes: 3 additions & 1 deletion make/scripts/fixpath.sh
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,9 @@ function convert_path() {
suffix="${BASH_REMATCH[6]}"
# We only believe this is a path if the first part is an existing directory
if [[ -d "/$firstdir" ]]; then
# and the prefix is not a subdirectory in the current working directory. Remove
# any part leading up to a : or = in the prefix before checking.
if [[ -d "/$firstdir" && ! -d "${prefix##*:}" && ! -d "${prefix##*=}" ]]; then
if [[ $ENVROOT == "" ]]; then
if [[ $QUIET != true ]]; then
echo fixpath: failure: Path "'"$pathmatch"'" cannot be converted to Windows path >&2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,11 +153,14 @@ inline void FreezeBase::relativize_interpreted_frame_metadata(const frame& f, co
assert((intptr_t*)hf.at_relative(frame::interpreter_frame_last_sp_offset) == hf.unextended_sp(), "");

relativize_one(vfp, hfp, frame::interpreter_frame_initial_sp_offset); // == block_top == block_bottom
relativize_one(vfp, hfp, frame::interpreter_frame_extended_sp_offset);

// extended_sp is already relativized by TemplateInterpreterGenerator::generate_normal_entry or
// AbstractInterpreter::layout_activation

assert((hf.fp() - hf.unextended_sp()) == (f.fp() - f.unextended_sp()), "");
assert(hf.unextended_sp() == (intptr_t*)hf.at(frame::interpreter_frame_last_sp_offset), "");
assert(hf.unextended_sp() <= (intptr_t*)hf.at(frame::interpreter_frame_initial_sp_offset), "");
assert(hf.unextended_sp() > (intptr_t*)hf.at(frame::interpreter_frame_extended_sp_offset), "");
assert(hf.fp() > (intptr_t*)hf.at(frame::interpreter_frame_initial_sp_offset), "");
assert(hf.fp() <= (intptr_t*)hf.at(frame::interpreter_frame_locals_offset), "");
}
Expand Down Expand Up @@ -294,7 +297,9 @@ inline void ThawBase::derelativize_interpreted_frame_metadata(const frame& hf, c
assert((intptr_t*)f.at_relative(frame::interpreter_frame_last_sp_offset) == f.unextended_sp(), "");

derelativize_one(vfp, frame::interpreter_frame_initial_sp_offset);
derelativize_one(vfp, frame::interpreter_frame_extended_sp_offset);

// Make sure that extended_sp is kept relativized.
assert((intptr_t*)f.at_relative(frame::interpreter_frame_extended_sp_offset) < f.unextended_sp(), "");
}

#endif // CPU_AARCH64_CONTINUATIONFREEZETHAW_AARCH64_INLINE_HPP
4 changes: 3 additions & 1 deletion src/hotspot/cpu/aarch64/frame_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,9 @@ void frame::interpreter_frame_set_last_sp(intptr_t* sp) {

// Used by template based interpreter deoptimization
void frame::interpreter_frame_set_extended_sp(intptr_t* sp) {
*((intptr_t**)addr_at(interpreter_frame_extended_sp_offset)) = sp;
assert(is_interpreted_frame(), "interpreted frame expected");
// set relativized extended_sp
ptr_at_put(interpreter_frame_extended_sp_offset, (sp - fp()));
}

frame frame::sender_for_entry_frame(RegisterMap* map) const {
Expand Down
2 changes: 2 additions & 0 deletions src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ class InterpreterMacroAssembler: public MacroAssembler {
void restore_sp_after_call() {
Label L;
ldr(rscratch1, Address(rfp, frame::interpreter_frame_extended_sp_offset * wordSize));
lea(rscratch1, Address(rfp, rscratch1, Address::lsl(LogBytesPerWord)));
#ifdef ASSERT
cbnz(rscratch1, L);
stop("SP is null");
Expand All @@ -98,6 +99,7 @@ class InterpreterMacroAssembler: public MacroAssembler {
#ifdef ASSERT
Label L;
ldr(rscratch1, Address(rfp, frame::interpreter_frame_extended_sp_offset * wordSize));
lea(rscratch1, Address(rfp, rscratch1, Address::lsl(LogBytesPerWord)));
cmp(sp, rscratch1);
br(EQ, L);
stop(msg);
Expand Down
11 changes: 8 additions & 3 deletions src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -819,7 +819,8 @@ void TemplateInterpreterGenerator::lock_method() {
__ check_extended_sp();
__ sub(sp, sp, entry_size); // add space for a monitor entry
__ sub(esp, esp, entry_size);
__ mov(rscratch1, sp);
__ sub(rscratch1, sp, rfp);
__ asr(rscratch1, rscratch1, Interpreter::logStackElementSize);
__ str(rscratch1, Address(rfp, frame::interpreter_frame_extended_sp_offset * wordSize));
__ str(esp, monitor_block_top); // set new monitor block top
// store object
Expand Down Expand Up @@ -887,15 +888,19 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) {
__ add(rscratch1, rscratch1, MAX2(3, Method::extra_stack_entries()));
__ sub(rscratch1, sp, rscratch1, ext::uxtw, 3);
__ andr(rscratch1, rscratch1, -16);
__ sub(rscratch2, rscratch1, rfp);
__ asr(rscratch2, rscratch2, Interpreter::logStackElementSize);
// Store extended SP and mirror
__ stp(r10, rscratch1, Address(sp, 4 * wordSize));
__ stp(r10, rscratch2, Address(sp, 4 * wordSize));
// Move SP out of the way
__ mov(sp, rscratch1);
} else {
// Make sure there is room for the exception oop pushed in case method throws
// an exception (see TemplateInterpreterGenerator::generate_throw_exception())
__ sub(rscratch1, sp, 2 * wordSize);
__ stp(r10, rscratch1, Address(sp, 4 * wordSize));
__ sub(rscratch2, rscratch1, rfp);
__ asr(rscratch2, rscratch2, Interpreter::logStackElementSize);
__ stp(r10, rscratch2, Address(sp, 4 * wordSize));
__ mov(sp, rscratch1);
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/hotspot/cpu/aarch64/templateTable_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4194,7 +4194,8 @@ void TemplateTable::monitorenter()

__ check_extended_sp();
__ sub(sp, sp, entry_size); // make room for the monitor
__ mov(rscratch1, sp);
__ sub(rscratch1, sp, rfp);
__ asr(rscratch1, rscratch1, Interpreter::logStackElementSize);
__ str(rscratch1, Address(rfp, frame::interpreter_frame_extended_sp_offset * wordSize));

__ ldr(c_rarg1, monitor_block_bot); // c_rarg1: old expression stack bottom
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/cpu/ppc/foreignGlobals_ppc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ bool ABIDescriptor::is_volatile_reg(FloatRegister reg) const {
}

bool ForeignGlobals::is_foreign_linker_supported() {
#ifdef ABI_ELFv2
#ifdef LINUX
return true;
#else
return false;
Expand Down
9 changes: 7 additions & 2 deletions src/hotspot/cpu/riscv/continuationFreezeThaw_riscv.inline.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,14 @@ inline void FreezeBase::relativize_interpreted_frame_metadata(const frame& f, co
assert((intptr_t*)hf.at_relative(frame::interpreter_frame_last_sp_offset) == hf.unextended_sp(), "");

relativize_one(vfp, hfp, frame::interpreter_frame_initial_sp_offset); // == block_top == block_bottom
relativize_one(vfp, hfp, frame::interpreter_frame_extended_sp_offset);

// extended_sp is already relativized by TemplateInterpreterGenerator::generate_normal_entry or
// AbstractInterpreter::layout_activation

assert((hf.fp() - hf.unextended_sp()) == (f.fp() - f.unextended_sp()), "");
assert(hf.unextended_sp() == (intptr_t*)hf.at(frame::interpreter_frame_last_sp_offset), "");
assert(hf.unextended_sp() <= (intptr_t*)hf.at(frame::interpreter_frame_initial_sp_offset), "");
assert(hf.unextended_sp() > (intptr_t*)hf.at(frame::interpreter_frame_extended_sp_offset), "");
assert(hf.fp() > (intptr_t*)hf.at(frame::interpreter_frame_initial_sp_offset), "");
#ifdef ASSERT
if (f.interpreter_frame_method()->max_locals() > 0) {
Expand Down Expand Up @@ -296,7 +299,9 @@ inline void ThawBase::derelativize_interpreted_frame_metadata(const frame& hf, c
assert((intptr_t*)f.at_relative(frame::interpreter_frame_last_sp_offset) == f.unextended_sp(), "");

derelativize_one(vfp, frame::interpreter_frame_initial_sp_offset);
derelativize_one(vfp, frame::interpreter_frame_extended_sp_offset);

// Make sure that extended_sp is kept relativized.
assert((intptr_t*)f.at_relative(frame::interpreter_frame_extended_sp_offset) < f.unextended_sp(), "");
}

#endif // CPU_RISCV_CONTINUATIONFREEZETHAW_RISCV_INLINE_HPP
4 changes: 3 additions & 1 deletion src/hotspot/cpu/riscv/frame_riscv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,9 @@ void frame::interpreter_frame_set_last_sp(intptr_t* last_sp) {
}

void frame::interpreter_frame_set_extended_sp(intptr_t* sp) {
*((intptr_t**)addr_at(interpreter_frame_extended_sp_offset)) = sp;
assert(is_interpreted_frame(), "interpreted frame expected");
// set relativized extended_sp
ptr_at_put(interpreter_frame_extended_sp_offset, (sp - fp()));
}

frame frame::sender_for_entry_frame(RegisterMap* map) const {
Expand Down
2 changes: 2 additions & 0 deletions src/hotspot/cpu/riscv/interp_masm_riscv.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class InterpreterMacroAssembler: public MacroAssembler {
void restore_sp_after_call() {
Label L;
ld(t0, Address(fp, frame::interpreter_frame_extended_sp_offset * wordSize));
shadd(t0, t0, fp, t0, LogBytesPerWord);
#ifdef ASSERT
bnez(t0, L);
stop("SP is null");
Expand All @@ -97,6 +98,7 @@ class InterpreterMacroAssembler: public MacroAssembler {
#ifdef ASSERT
Label L;
ld(t0, Address(fp, frame::interpreter_frame_extended_sp_offset * wordSize));
shadd(t0, t0, fp, t0, LogBytesPerWord);
beq(sp, t0, L);
stop(msg);
bind(L);
Expand Down
15 changes: 15 additions & 0 deletions src/hotspot/cpu/riscv/riscv.ad
Original file line number Diff line number Diff line change
Expand Up @@ -6864,6 +6864,21 @@ instruct mulHiL_rReg(iRegLNoSp dst, iRegL src1, iRegL src2)
ins_pipe(lmul_reg_reg);
%}

instruct umulHiL_rReg(iRegLNoSp dst, iRegL src1, iRegL src2)
%{
match(Set dst (UMulHiL src1 src2));
ins_cost(IMUL_COST);
format %{ "mulhu $dst, $src1, $src2\t# umulhi, #@umulHiL_rReg" %}

ins_encode %{
__ mulhu(as_Register($dst$$reg),
as_Register($src1$$reg),
as_Register($src2$$reg));
%}

ins_pipe(lmul_reg_reg);
%}

// Integer Divide

instruct divI(iRegINoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{
Expand Down
12 changes: 9 additions & 3 deletions src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,9 @@ void TemplateInterpreterGenerator::lock_method() {
__ check_extended_sp();
__ add(sp, sp, - entry_size); // add space for a monitor entry
__ add(esp, esp, - entry_size);
__ sd(sp, Address(fp, frame::interpreter_frame_extended_sp_offset * wordSize));
__ sub(t0, sp, fp);
__ srai(t0, t0, Interpreter::logStackElementSize);
__ sd(t0, Address(fp, frame::interpreter_frame_extended_sp_offset * wordSize));
__ sd(esp, monitor_block_top); // set new monitor block top
// store object
__ sd(x10, Address(esp, BasicObjectLock::obj_offset()));
Expand Down Expand Up @@ -785,15 +787,19 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) {
__ slli(t0, t0, 3);
__ sub(t0, sp, t0);
__ andi(t0, t0, -16);
__ sub(t1, t0, fp);
__ srai(t1, t1, Interpreter::logStackElementSize);
// Store extended SP
__ sd(t0, Address(sp, 5 * wordSize));
__ sd(t1, Address(sp, 5 * wordSize));
// Move SP out of the way
__ mv(sp, t0);
} else {
// Make sure there is room for the exception oop pushed in case method throws
// an exception (see TemplateInterpreterGenerator::generate_throw_exception())
__ sub(t0, sp, 2 * wordSize);
__ sd(t0, Address(sp, 5 * wordSize));
__ sub(t1, t0, fp);
__ srai(t1, t1, Interpreter::logStackElementSize);
__ sd(t1, Address(sp, 5 * wordSize));
__ mv(sp, t0);
}
}
Expand Down
4 changes: 3 additions & 1 deletion src/hotspot/cpu/riscv/templateTable_riscv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3844,7 +3844,9 @@ void TemplateTable::monitorenter() {

__ check_extended_sp();
__ sub(sp, sp, entry_size); // make room for the monitor
__ sd(sp, Address(fp, frame::interpreter_frame_extended_sp_offset * wordSize));
__ sub(t0, sp, fp);
__ srai(t0, t0, Interpreter::logStackElementSize);
__ sd(t0, Address(fp, frame::interpreter_frame_extended_sp_offset * wordSize));

__ ld(c_rarg1, monitor_block_bot); // c_rarg1: old expression stack bottom
__ sub(esp, esp, entry_size); // move expression stack top
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2225,7 +2225,7 @@ void LIR_Assembler::cmove(LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, L

} else {
Label skip;
__ jcc (acond, skip);
__ jccb(acond, skip);
if (opr2->is_cpu_register()) {
reg2reg(opr2, result);
} else if (opr2->is_stack()) {
Expand Down
Loading

0 comments on commit 24e0c05

Please sign in to comment.