Skip to content

Commit

Permalink
Merge upstream-jdk
Browse files Browse the repository at this point in the history
  • Loading branch information
corretto-github-robot committed Sep 28, 2023
2 parents c02647d + 77fac0f commit c91300f
Show file tree
Hide file tree
Showing 85 changed files with 934 additions and 551 deletions.
12 changes: 6 additions & 6 deletions make/conf/github-actions.conf
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@ GTEST_VERSION=1.14.0
JTREG_VERSION=7.3.1+1

LINUX_X64_BOOT_JDK_EXT=tar.gz
LINUX_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk20/bdc68b4b9cbc4ebcb30745c85038d91d/36/GPL/openjdk-20_linux-x64_bin.tar.gz
LINUX_X64_BOOT_JDK_SHA256=bb863b2d542976d1ae4b7b81af3e78b1e4247a64644350b552d298d8dc5980dc
LINUX_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz
LINUX_X64_BOOT_JDK_SHA256=a30c454a9bef8f46d5f1bf3122830014a8fbe7ac03b5f8729bc3add4b92a1d0a

MACOS_X64_BOOT_JDK_EXT=tar.gz
MACOS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk20/bdc68b4b9cbc4ebcb30745c85038d91d/36/GPL/openjdk-20_macos-x64_bin.tar.gz
MACOS_X64_BOOT_JDK_SHA256=47cf960d9bb89dbe987535a389f7e26c42de7c984ef5108612d77c81aa8cc6a4
MACOS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_macos-x64_bin.tar.gz
MACOS_X64_BOOT_JDK_SHA256=af32e84c11009f72f783fdcdc9917efc277893988f097e198e2576875d1e88c1

WINDOWS_X64_BOOT_JDK_EXT=zip
WINDOWS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk20/bdc68b4b9cbc4ebcb30745c85038d91d/36/GPL/openjdk-20_windows-x64_bin.zip
WINDOWS_X64_BOOT_JDK_SHA256=c92fae5e42b9aecf444a66c8ec563c652f60b1e231dfdd33a4f5a3e3603058fb
WINDOWS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_windows-x64_bin.zip
WINDOWS_X64_BOOT_JDK_SHA256=5434faaf029e66e7ce6e75770ca384de476750984a7d2881ef7686894c4b4944
4 changes: 2 additions & 2 deletions make/conf/jib-profiles.js
Original file line number Diff line number Diff line change
Expand Up @@ -390,8 +390,8 @@ var getJibProfilesCommon = function (input, data) {
};
};

common.boot_jdk_version = "20";
common.boot_jdk_build_number = "36";
common.boot_jdk_version = "21";
common.boot_jdk_build_number = "35";
common.boot_jdk_home = input.get("boot_jdk", "install_path") + "/jdk-"
+ common.boot_jdk_version
+ (input.build_os == "macosx" ? ".jdk/Contents/Home" : "");
Expand Down
2 changes: 1 addition & 1 deletion make/conf/version-numbers.conf
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@ DEFAULT_VERSION_DATE=2024-03-19
DEFAULT_VERSION_CLASSFILE_MAJOR=66 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
DEFAULT_VERSION_CLASSFILE_MINOR=0
DEFAULT_VERSION_DOCS_API_SINCE=11
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="20 21 22"
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="21 22"
DEFAULT_JDK_SOURCE_TARGET_VERSION=22
DEFAULT_PROMOTED_VERSION_PRE=ea
26 changes: 6 additions & 20 deletions src/hotspot/cpu/aarch64/continuationFreezeThaw_aarch64.inline.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,20 +129,11 @@ void FreezeBase::adjust_interpreted_frame_unextended_sp(frame& f) {
}
}

static inline void relativize_one(intptr_t* const vfp, intptr_t* const hfp, int offset) {
assert(*(hfp + offset) == *(vfp + offset), "");
intptr_t* addr = hfp + offset;
intptr_t value = *(intptr_t**)addr - vfp;
*addr = value;
}

inline void FreezeBase::relativize_interpreted_frame_metadata(const frame& f, const frame& hf) {
intptr_t* vfp = f.fp();
intptr_t* hfp = hf.fp();
assert(hfp == hf.unextended_sp() + (f.fp() - f.unextended_sp()), "");
assert(hf.fp() == hf.unextended_sp() + (f.fp() - f.unextended_sp()), "");
assert((f.at(frame::interpreter_frame_last_sp_offset) != 0)
|| (f.unextended_sp() == f.sp()), "");
assert(f.fp() > (intptr_t*)f.at(frame::interpreter_frame_initial_sp_offset), "");
assert(f.fp() > (intptr_t*)f.at_relative(frame::interpreter_frame_initial_sp_offset), "");

// on AARCH64, we may insert padding between the locals and the rest of the frame
// (see TemplateInterpreterGenerator::generate_normal_entry, and AbstractInterpreter::layout_activation)
Expand All @@ -152,7 +143,8 @@ inline void FreezeBase::relativize_interpreted_frame_metadata(const frame& f, co
// Make sure that last_sp is already relativized.
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
// Make sure that monitor_block_top is already relativized.
assert(hf.at_absolute(frame::interpreter_frame_monitor_block_top_offset) <= frame::interpreter_frame_initial_sp_offset, "");

// extended_sp is already relativized by TemplateInterpreterGenerator::generate_normal_entry or
// AbstractInterpreter::layout_activation
Expand Down Expand Up @@ -285,18 +277,12 @@ inline void ThawBase::patch_pd(frame& f, const frame& caller) {
patch_callee_link(caller, caller.fp());
}

static inline void derelativize_one(intptr_t* const fp, int offset) {
intptr_t* addr = fp + offset;
*addr = (intptr_t)(fp + *addr);
}

inline void ThawBase::derelativize_interpreted_frame_metadata(const frame& hf, const frame& f) {
intptr_t* vfp = f.fp();

// Make sure that last_sp is kept relativized.
assert((intptr_t*)f.at_relative(frame::interpreter_frame_last_sp_offset) == f.unextended_sp(), "");

derelativize_one(vfp, frame::interpreter_frame_initial_sp_offset);
// Make sure that monitor_block_top is still relativized.
assert(f.at_absolute(frame::interpreter_frame_monitor_block_top_offset) <= frame::interpreter_frame_initial_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(), "");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ inline intptr_t* ContinuationHelper::InterpretedFrame::frame_top(const frame& f,
// interpreter_frame_last_sp_offset, points to unextended_sp includes arguments in the frame
// interpreter_frame_initial_sp_offset excludes expression stack slots
int expression_stack_sz = expression_stack_size(f, mask);
intptr_t* res = *(intptr_t**)f.addr_at(frame::interpreter_frame_initial_sp_offset) - expression_stack_sz;
intptr_t* res = (intptr_t*)f.at_relative(frame::interpreter_frame_initial_sp_offset) - expression_stack_sz;
assert(res == (intptr_t*)f.interpreter_frame_monitor_end() - expression_stack_sz, "");
assert(res >= f.unextended_sp(),
"res: " INTPTR_FORMAT " initial_sp: " INTPTR_FORMAT " last_sp: " INTPTR_FORMAT " unextended_sp: " INTPTR_FORMAT " expression_stack_size: %d",
Expand Down
7 changes: 5 additions & 2 deletions src/hotspot/cpu/aarch64/frame_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -342,15 +342,18 @@ BasicObjectLock* frame::interpreter_frame_monitor_begin() const {
}

BasicObjectLock* frame::interpreter_frame_monitor_end() const {
BasicObjectLock* result = (BasicObjectLock*) at(interpreter_frame_monitor_block_top_offset);
BasicObjectLock* result = (BasicObjectLock*) at_relative(interpreter_frame_monitor_block_top_offset);
// make sure the pointer points inside the frame
assert(sp() <= (intptr_t*) result, "monitor end should be above the stack pointer");
assert((intptr_t*) result < fp(), "monitor end should be strictly below the frame pointer");
return result;
}

void frame::interpreter_frame_set_monitor_end(BasicObjectLock* value) {
*((BasicObjectLock**)addr_at(interpreter_frame_monitor_block_top_offset)) = value;
assert(is_interpreted_frame(), "interpreted frame expected");
// set relativized monitor_block_top
ptr_at_put(interpreter_frame_monitor_block_top_offset, (intptr_t*)value - fp());
assert(at_absolute(interpreter_frame_monitor_block_top_offset) <= interpreter_frame_monitor_block_top_offset, "");
}

// Used by template based interpreter deoptimization
Expand Down
6 changes: 4 additions & 2 deletions src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -632,8 +632,10 @@ void InterpreterMacroAssembler::remove_activation(
bind(restart);
// We use c_rarg1 so that if we go slow path it will be the correct
// register for unlock_object to pass to VM directly
ldr(c_rarg1, monitor_block_top); // points to current entry, starting
// with top-most entry
ldr(c_rarg1, monitor_block_top); // derelativize pointer
lea(c_rarg1, Address(rfp, c_rarg1, Address::lsl(Interpreter::logStackElementSize)));
// c_rarg1 points to current entry, starting with top-most entry

lea(r19, monitor_block_bot); // points to word before bottom of
// monitor block
b(entry);
Expand Down
3 changes: 2 additions & 1 deletion src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,8 @@ class InterpreterMacroAssembler: public MacroAssembler {
void push(RegSet regs, Register stack) { ((MacroAssembler*)this)->push(regs, stack); }

void empty_expression_stack() {
ldr(esp, Address(rfp, frame::interpreter_frame_monitor_block_top_offset * wordSize));
ldr(rscratch1, Address(rfp, frame::interpreter_frame_monitor_block_top_offset * wordSize));
lea(esp, Address(rfp, rscratch1, Address::lsl(LogBytesPerWord)));
// null last_sp until next java call
str(zr, Address(rfp, frame::interpreter_frame_last_sp_offset * wordSize));
}
Expand Down
14 changes: 11 additions & 3 deletions src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,7 @@ address TemplateInterpreterGenerator::generate_StackOverflowError_handler() {
__ ldr(rscratch1, Address(rfp,
frame::interpreter_frame_monitor_block_top_offset *
wordSize));
__ lea(rscratch1, Address(rfp, rscratch1, Address::lsl(Interpreter::logStackElementSize)));
__ mov(rscratch2, sp);
__ cmp(rscratch1, rscratch2); // maximal rsp for current rfp (stack
// grows negative)
Expand Down Expand Up @@ -816,7 +817,10 @@ void TemplateInterpreterGenerator::lock_method() {
__ 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
__ sub(rscratch1, esp, rfp);
__ asr(rscratch1, rscratch1, Interpreter::logStackElementSize);
__ str(rscratch1, monitor_block_top); // set new monitor block top

// store object
__ str(r0, Address(esp, BasicObjectLock::obj_offset()));
__ mov(c_rarg1, esp); // object address
Expand All @@ -837,14 +841,16 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) {
if (native_call) {
__ sub(esp, sp, 14 * wordSize);
__ mov(rbcp, zr);
__ stp(esp, zr, Address(__ pre(sp, -14 * wordSize)));
__ mov(rscratch1, frame::interpreter_frame_initial_sp_offset);
__ stp(rscratch1, zr, Address(__ pre(sp, -14 * wordSize)));
// add 2 zero-initialized slots for native calls
__ stp(zr, zr, Address(sp, 12 * wordSize));
} else {
__ sub(esp, sp, 12 * wordSize);
__ ldr(rscratch1, Address(rmethod, Method::const_offset())); // get ConstMethod
__ add(rbcp, rscratch1, in_bytes(ConstMethod::codes_offset())); // get codebase
__ stp(esp, rbcp, Address(__ pre(sp, -12 * wordSize)));
__ mov(rscratch1, frame::interpreter_frame_initial_sp_offset);
__ stp(rscratch1, rbcp, Address(__ pre(sp, -12 * wordSize)));
}

if (ProfileInterpreter) {
Expand Down Expand Up @@ -1258,6 +1264,7 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
const Address monitor_block_top(rfp,
frame::interpreter_frame_monitor_block_top_offset * wordSize);
__ ldr(rscratch1, monitor_block_top);
__ lea(rscratch1, Address(rfp, rscratch1, Address::lsl(Interpreter::logStackElementSize)));
__ cmp(esp, rscratch1);
__ br(Assembler::EQ, L);
__ stop("broken stack frame setup in interpreter 1");
Expand Down Expand Up @@ -1710,6 +1717,7 @@ address TemplateInterpreterGenerator::generate_normal_entry(bool synchronized) {
const Address monitor_block_top (rfp,
frame::interpreter_frame_monitor_block_top_offset * wordSize);
__ ldr(rscratch1, monitor_block_top);
__ lea(rscratch1, Address(rfp, rscratch1, Address::lsl(Interpreter::logStackElementSize)));
__ cmp(esp, rscratch1);
__ br(Assembler::EQ, L);
__ stop("broken stack frame setup in interpreter 2");
Expand Down
21 changes: 15 additions & 6 deletions src/hotspot/cpu/aarch64/templateTable_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3874,8 +3874,10 @@ void TemplateTable::monitorenter()
// find a free slot in the monitor block (result in c_rarg1)
{
Label entry, loop, exit;
__ ldr(c_rarg3, monitor_block_top); // points to current entry,
// starting with top-most entry
__ ldr(c_rarg3, monitor_block_top); // derelativize pointer
__ lea(c_rarg3, Address(rfp, c_rarg3, Address::lsl(Interpreter::logStackElementSize)));
// c_rarg3 points to current entry, starting with top-most entry

__ lea(c_rarg2, monitor_block_bot); // points to word before bottom

__ b(entry);
Expand Down Expand Up @@ -3914,11 +3916,16 @@ void TemplateTable::monitorenter()
__ 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
__ ldr(c_rarg1, monitor_block_bot); // derelativize pointer
__ lea(c_rarg1, Address(rfp, c_rarg1, Address::lsl(Interpreter::logStackElementSize)));
// c_rarg1 points to the old expression stack bottom

__ sub(esp, esp, entry_size); // move expression stack top
__ sub(c_rarg1, c_rarg1, entry_size); // move expression stack bottom
__ mov(c_rarg3, esp); // set start value for copy loop
__ str(c_rarg1, monitor_block_bot); // set new monitor block bottom
__ sub(rscratch1, c_rarg1, rfp); // relativize pointer
__ asr(rscratch1, rscratch1, Interpreter::logStackElementSize);
__ str(rscratch1, monitor_block_bot); // set new monitor block bottom

__ b(entry);
// 2. move expression stack contents
Expand Down Expand Up @@ -3975,8 +3982,10 @@ void TemplateTable::monitorexit()
// find matching slot
{
Label entry, loop;
__ ldr(c_rarg1, monitor_block_top); // points to current entry,
// starting with top-most entry
__ ldr(c_rarg1, monitor_block_top); // derelativize pointer
__ lea(c_rarg1, Address(rfp, c_rarg1, Address::lsl(Interpreter::logStackElementSize)));
// c_rarg1 points to current entry, starting with top-most entry

__ lea(c_rarg2, monitor_block_bot); // points to word before bottom
// of monitor block
__ b(entry);
Expand Down
8 changes: 6 additions & 2 deletions src/hotspot/cpu/ppc/continuationFreezeThaw_ppc.inline.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,9 @@ inline void FreezeBase::relativize_interpreted_frame_metadata(const frame& f, co
// frame, because we freeze the padding (see recurse_freeze_interpreted_frame)
// in order to keep the same relativized locals pointer, we don't need to change it here.

relativize_one(vfp, hfp, ijava_idx(monitors));
// Make sure that monitors is already relativized.
assert(hf.at_absolute(ijava_idx(monitors)) <= -(frame::ijava_state_size / wordSize), "");

relativize_one(vfp, hfp, ijava_idx(esp));
// top_frame_sp is already relativized

Expand Down Expand Up @@ -542,7 +544,9 @@ static inline void derelativize_one(intptr_t* const fp, int offset) {
inline void ThawBase::derelativize_interpreted_frame_metadata(const frame& hf, const frame& f) {
intptr_t* vfp = f.fp();

derelativize_one(vfp, ijava_idx(monitors));
// Make sure that monitors is still relativized.
assert(f.at_absolute(ijava_idx(monitors)) <= -(frame::ijava_state_size / wordSize), "");

derelativize_one(vfp, ijava_idx(esp));
// Keep top_frame_sp relativized.
}
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/cpu/ppc/frame_ppc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ frame::frame(void* sp, void* fp, void* pc) : frame((intptr_t*)sp, (address)pc) {

// Pointer beyond the "oldest/deepest" BasicObjectLock on stack.
BasicObjectLock* frame::interpreter_frame_monitor_end() const {
BasicObjectLock* result = (BasicObjectLock*) at(ijava_idx(monitors));
BasicObjectLock* result = (BasicObjectLock*) at_relative(ijava_idx(monitors));
// make sure the pointer points inside the frame
assert(sp() <= (intptr_t*) result, "monitor end should be above the stack pointer");
assert((intptr_t*) result < fp(), "monitor end should be strictly below the frame pointer: result: " INTPTR_FORMAT " fp: " INTPTR_FORMAT, p2i(result), p2i(fp()));
Expand Down
7 changes: 6 additions & 1 deletion src/hotspot/cpu/ppc/frame_ppc.inline.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,12 @@ inline intptr_t* frame::interpreter_frame_esp() const {
}

// Convenient setters
inline void frame::interpreter_frame_set_monitor_end(BasicObjectLock* end) { get_ijava_state()->monitors = (intptr_t) end;}
inline void frame::interpreter_frame_set_monitor_end(BasicObjectLock* end) {
assert(is_interpreted_frame(), "interpreted frame expected");
// set relativized monitors
get_ijava_state()->monitors = (intptr_t) ((intptr_t*)end - fp());
}

inline void frame::interpreter_frame_set_cpcache(ConstantPoolCache* cp) { *interpreter_frame_cache_addr() = cp; }
inline void frame::interpreter_frame_set_esp(intptr_t* esp) { get_ijava_state()->esp = (intptr_t) esp; }

Expand Down
7 changes: 6 additions & 1 deletion src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2217,7 +2217,9 @@ void InterpreterMacroAssembler::save_interpreter_state(Register scratch) {
ld(scratch, 0, R1_SP);
std(R15_esp, _ijava_state_neg(esp), scratch);
std(R14_bcp, _ijava_state_neg(bcp), scratch);
std(R26_monitor, _ijava_state_neg(monitors), scratch);
subf(R0, scratch, R26_monitor);
sradi(R0, R0, Interpreter::logStackElementSize);
std(R0, _ijava_state_neg(monitors), scratch);
if (ProfileInterpreter) { std(R28_mdx, _ijava_state_neg(mdx), scratch); }
// Other entries should be unchanged.
}
Expand Down Expand Up @@ -2248,6 +2250,9 @@ void InterpreterMacroAssembler::restore_interpreter_state(Register scratch, bool
sldi(R18_locals, R18_locals, Interpreter::logStackElementSize);
add(R18_locals, R18_locals, scratch);
ld(R26_monitor, _ijava_state_neg(monitors), scratch);
// Derelativize monitors
sldi(R26_monitor, R26_monitor, Interpreter::logStackElementSize);
add(R26_monitor, R26_monitor, scratch);
}
#ifdef ASSERT
{
Expand Down
7 changes: 5 additions & 2 deletions src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1055,7 +1055,8 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call, Regist
// Also initialize them for non-native calls for better tool support (even though
// you may not get the most recent version as described above).
__ li(R0, 0);
__ std(R26_monitor, _ijava_state_neg(monitors), R1_SP);
__ li(R12_scratch2, -(frame::ijava_state_size / wordSize));
__ std(R12_scratch2, _ijava_state_neg(monitors), R1_SP);
__ std(R14_bcp, _ijava_state_neg(bcp), R1_SP);
if (ProfileInterpreter) { __ std(R28_mdx, _ijava_state_neg(mdx), R1_SP); }
__ std(R15_esp, _ijava_state_neg(esp), R1_SP);
Expand Down Expand Up @@ -1288,7 +1289,9 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {

// Update monitor in state.
__ ld(R11_scratch1, 0, R1_SP);
__ std(R26_monitor, _ijava_state_neg(monitors), R11_scratch1);
__ sub(R12_scratch2, R26_monitor, R11_scratch1);
__ sradi(R12_scratch2, R12_scratch2, Interpreter::logStackElementSize);
__ std(R12_scratch2, _ijava_state_neg(monitors), R11_scratch1);
}

// jvmti/jvmpi support
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/cpu/riscv/c1_LIRGenerator_riscv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -801,7 +801,7 @@ void LIRGenerator::do_FmaIntrinsic(Intrinsic* x) {
}

void LIRGenerator::do_vectorizedMismatch(Intrinsic* x) {
fatal("vectorizedMismatch intrinsic is not implemented on this platform");
ShouldNotReachHere();
}

// _i2l, _i2f, _i2d, _l2i, _l2f, _l2d, _f2i, _f2l, _f2d, _d2i, _d2l, _d2f
Expand Down
Loading

0 comments on commit c91300f

Please sign in to comment.