Skip to content

Commit 928d6c0

Browse files
[Automated] Merge in tag jdk-24+9
PullRequest: labsjdk-ce/101
2 parents 14466aa + b46ab0e commit 928d6c0

File tree

375 files changed

+7909
-5051
lines changed

Some content is hidden

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

375 files changed

+7909
-5051
lines changed

make/autoconf/lib-alsa.m4

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,25 @@ AC_DEFUN_ONCE([LIB_SETUP_ALSA],
7070
PKG_CHECK_MODULES(ALSA, alsa, [ALSA_FOUND=yes], [ALSA_FOUND=no])
7171
fi
7272
fi
73+
if test "x$ALSA_FOUND" = xno; then
74+
# If we have sysroot set, and no explicit library location is set,
75+
# look at known locations in sysroot.
76+
if test "x$SYSROOT" != "x" && test "x${with_alsa_lib}" == x; then
77+
if test -f "$SYSROOT/usr/lib64/libasound.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
78+
ALSA_LIBS="-L$SYSROOT/usr/lib64 -lasound"
79+
ALSA_FOUND=yes
80+
elif test -f "$SYSROOT/usr/lib/libasound.so"; then
81+
ALSA_LIBS="-L$SYSROOT/usr/lib -lasound"
82+
ALSA_FOUND=yes
83+
elif test -f "$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libasound.so"; then
84+
ALSA_LIBS="-L$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI -lasound"
85+
ALSA_FOUND=yes
86+
elif test -f "$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU_AUTOCONF-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libasound.so"; then
87+
ALSA_LIBS="-L$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU_AUTOCONF-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI -lasound"
88+
ALSA_FOUND=yes
89+
fi
90+
fi
91+
fi
7392
if test "x$ALSA_FOUND" = xno; then
7493
AC_CHECK_HEADERS([alsa/asoundlib.h],
7594
[

make/autoconf/lib-x11.m4

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ AC_DEFUN_ONCE([LIB_SETUP_X11],
7171
elif test -f "$SYSROOT/usr/lib/libX11.so"; then
7272
x_libraries="$SYSROOT/usr/lib"
7373
elif test -f "$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libX11.so"; then
74-
x_libraries="$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libX11.so"
74+
x_libraries="$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI"
7575
elif test -f "$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU_AUTOCONF-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libX11.so"; then
76-
x_libraries="$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU_AUTOCONF-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libX11.so"
76+
x_libraries="$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU_AUTOCONF-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI"
7777
fi
7878
fi
7979
fi

make/test/JtregNativeHotspot.gmk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,7 @@ ifeq ($(call isTargetOs, windows), true)
871871
BUILD_HOTSPOT_JTREG_EXECUTABLES_CFLAGS_exeFPRegs := -MT
872872
BUILD_HOTSPOT_JTREG_EXCLUDE += exesigtest.c libterminatedThread.c libTestJNI.c libCompleteExit.c libMonitorWithDeadObjectTest.c libTestPsig.c exeGetCreatedJavaVMs.c
873873
BUILD_HOTSPOT_JTREG_LIBRARIES_JDK_LIBS_libnativeStack := java.base:libjvm
874+
BUILD_HOTSPOT_JTREG_LIBRARIES_JDK_LIBS_libVThreadEventTest := java.base:libjvm
874875
else
875876
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libbootclssearch_agent += -lpthread
876877
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libsystemclssearch_agent += -lpthread
@@ -1509,6 +1510,7 @@ else
15091510
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libCompleteExit += -lpthread
15101511
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libMonitorWithDeadObjectTest += -lpthread
15111512
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libnativeStack += -lpthread
1513+
BUILD_HOTSPOT_JTREG_LIBRARIES_JDK_LIBS_libVThreadEventTest := java.base:libjvm
15121514
BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exeGetCreatedJavaVMs := -lpthread
15131515
BUILD_HOTSPOT_JTREG_EXECUTABLES_JDK_LIBS_exeGetCreatedJavaVMs := java.base:libjvm
15141516

src/demo/share/jfc/SwingSet2/SwingSet2.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
*
3-
* Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
3+
* Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved.
44
*
55
* Redistribution and use in source and binary forms, with or without
66
* modification, are permitted provided that the following conditions
@@ -848,7 +848,14 @@ private void updateThisSwingSet() {
848848
if (frame == null) {
849849
SwingUtilities.updateComponentTreeUI(this);
850850
} else {
851+
if (currentLookAndFeel.name.contains("GTK")) {
852+
this.setPreferredSize(new Dimension(PREFERRED_WIDTH + 260, PREFERRED_HEIGHT + 80));
853+
} else {
854+
this.setPreferredSize(new Dimension(PREFERRED_WIDTH, PREFERRED_HEIGHT));
855+
}
856+
851857
SwingUtilities.updateComponentTreeUI(frame);
858+
frame.pack();
852859
}
853860

854861
SwingUtilities.updateComponentTreeUI(popupMenu);

src/hotspot/cpu/aarch64/aarch64.ad

Lines changed: 59 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2745,10 +2745,7 @@ typedef void (MacroAssembler::* mem_vector_insn)(FloatRegister Rt,
27452745
}
27462746

27472747
if (index == -1) {
2748-
/* If we get an out-of-range offset it is a bug in the compiler,
2749-
so we assert here. */
2750-
assert(Address::offset_ok_for_immed(disp, exact_log2(size_in_memory)), "c2 compiler bug");
2751-
/* Fix up any out-of-range offsets. */
2748+
// Fix up any out-of-range offsets.
27522749
assert_different_registers(rscratch1, base);
27532750
Address addr = Address(base, disp);
27542751
addr = __ legitimize_address(addr, size_in_memory, rscratch1);
@@ -3348,7 +3345,11 @@ encode %{
33483345
int scale = $mem$$scale;
33493346
int disp = $mem$$disp;
33503347
if (index == -1) {
3351-
__ prfm(Address(base, disp), PSTL1KEEP);
3348+
// Fix up any out-of-range offsets.
3349+
assert_different_registers(rscratch1, base);
3350+
Address addr = Address(base, disp);
3351+
addr = __ legitimize_address(addr, 8, rscratch1);
3352+
__ prfm(addr, PSTL1KEEP);
33523353
} else {
33533354
Register index_reg = as_Register(index);
33543355
if (disp == 0) {
@@ -4229,9 +4230,9 @@ operand immIOffset16()
42294230
interface(CONST_INTER);
42304231
%}
42314232

4232-
operand immLoffset()
4233+
operand immLOffset()
42334234
%{
4234-
predicate(Address::offset_ok_for_immed(n->get_long(), 0));
4235+
predicate(n->get_long() >= -256 && n->get_long() <= 65520);
42354236
match(ConL);
42364237

42374238
op_cost(0);
@@ -5341,6 +5342,34 @@ operand indOffL16(iRegP reg, immLoffset16 off)
53415342
%}
53425343
%}
53435344

5345+
operand indirectX2P(iRegL reg)
5346+
%{
5347+
constraint(ALLOC_IN_RC(ptr_reg));
5348+
match(CastX2P reg);
5349+
op_cost(0);
5350+
format %{ "[$reg]\t# long -> ptr" %}
5351+
interface(MEMORY_INTER) %{
5352+
base($reg);
5353+
index(0xffffffff);
5354+
scale(0x0);
5355+
disp(0x0);
5356+
%}
5357+
%}
5358+
5359+
operand indOffX2P(iRegL reg, immLOffset off)
5360+
%{
5361+
constraint(ALLOC_IN_RC(ptr_reg));
5362+
match(AddP (CastX2P reg) off);
5363+
op_cost(0);
5364+
format %{ "[$reg, $off]\t# long -> ptr" %}
5365+
interface(MEMORY_INTER) %{
5366+
base($reg);
5367+
index(0xffffffff);
5368+
scale(0x0);
5369+
disp($off);
5370+
%}
5371+
%}
5372+
53445373
operand indirectN(iRegN reg)
53455374
%{
53465375
predicate(CompressedOops::shift() == 0);
@@ -5431,7 +5460,7 @@ operand indOffIN(iRegN reg, immIOffset off)
54315460
%}
54325461
%}
54335462

5434-
operand indOffLN(iRegN reg, immLoffset off)
5463+
operand indOffLN(iRegN reg, immLOffset off)
54355464
%{
54365465
predicate(CompressedOops::shift() == 0);
54375466
constraint(ALLOC_IN_RC(ptr_reg));
@@ -5664,6 +5693,17 @@ operand iRegL2I(iRegL reg) %{
56645693
interface(REG_INTER)
56655694
%}
56665695

5696+
operand iRegL2P(iRegL reg) %{
5697+
5698+
op_cost(0);
5699+
5700+
match(CastX2P reg);
5701+
5702+
format %{ "l2p($reg)" %}
5703+
5704+
interface(REG_INTER)
5705+
%}
5706+
56675707
opclass vmem2(indirect, indIndex, indOffI2, indOffL2);
56685708
opclass vmem4(indirect, indIndex, indOffI4, indOffL4);
56695709
opclass vmem8(indirect, indIndex, indOffI8, indOffL8);
@@ -5680,21 +5720,21 @@ opclass vmem16(indirect, indIndex, indOffI16, indOffL16);
56805720
// instruction defs. we can turn a memory op into an Address
56815721

56825722
opclass memory1(indirect, indIndexScaled, indIndexScaledI2L, indIndexI2L, indIndex, indOffI1, indOffL1,
5683-
indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN);
5723+
indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN, indirectX2P, indOffX2P);
56845724

56855725
opclass memory2(indirect, indIndexScaled, indIndexScaledI2L, indIndexI2L, indIndex, indOffI2, indOffL2,
5686-
indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN);
5726+
indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN, indirectX2P, indOffX2P);
56875727

56885728
opclass memory4(indirect, indIndexScaled, indIndexScaledI2L, indIndexI2L, indIndex, indOffI4, indOffL4,
5689-
indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN, indOffIN, indOffLN);
5729+
indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN, indOffIN, indOffLN, indirectX2P, indOffX2P);
56905730

56915731
opclass memory8(indirect, indIndexScaled, indIndexScaledI2L, indIndexI2L, indIndex, indOffI8, indOffL8,
5692-
indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN, indOffIN, indOffLN);
5732+
indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN, indOffIN, indOffLN, indirectX2P, indOffX2P);
56935733

56945734
// All of the memory operands. For the pipeline description.
56955735
opclass memory(indirect, indIndexScaled, indIndexScaledI2L, indIndexI2L, indIndex,
56965736
indOffI1, indOffL1, indOffI2, indOffL2, indOffI4, indOffL4, indOffI8, indOffL8,
5697-
indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN, indOffIN, indOffLN);
5737+
indirectN, indIndexScaledN, indIndexScaledI2LN, indIndexI2LN, indIndexN, indOffIN, indOffLN, indirectX2P, indOffX2P);
56985738

56995739

57005740
// iRegIorL2I is used for src inputs in rules for 32 bit int (I)
@@ -5711,6 +5751,7 @@ opclass memory(indirect, indIndexScaled, indIndexScaledI2L, indIndexI2L, indInde
57115751
// movw is actually redundant but its not too costly.
57125752

57135753
opclass iRegIorL2I(iRegI, iRegL2I);
5754+
opclass iRegPorL2P(iRegP, iRegL2P);
57145755

57155756
//----------PIPELINE-----------------------------------------------------------
57165757
// Rules which define the behavior of the target architectures pipeline.
@@ -9811,7 +9852,7 @@ instruct addI_reg_imm_i2l(iRegINoSp dst, iRegL src1, immIAddSub src2) %{
98119852
%}
98129853

98139854
// Pointer Addition
9814-
instruct addP_reg_reg(iRegPNoSp dst, iRegP src1, iRegL src2) %{
9855+
instruct addP_reg_reg(iRegPNoSp dst, iRegPorL2P src1, iRegL src2) %{
98159856
match(Set dst (AddP src1 src2));
98169857

98179858
ins_cost(INSN_COST);
@@ -9826,7 +9867,7 @@ instruct addP_reg_reg(iRegPNoSp dst, iRegP src1, iRegL src2) %{
98269867
ins_pipe(ialu_reg_reg);
98279868
%}
98289869

9829-
instruct addP_reg_reg_ext(iRegPNoSp dst, iRegP src1, iRegIorL2I src2) %{
9870+
instruct addP_reg_reg_ext(iRegPNoSp dst, iRegPorL2P src1, iRegIorL2I src2) %{
98309871
match(Set dst (AddP src1 (ConvI2L src2)));
98319872

98329873
ins_cost(1.9 * INSN_COST);
@@ -9841,7 +9882,7 @@ instruct addP_reg_reg_ext(iRegPNoSp dst, iRegP src1, iRegIorL2I src2) %{
98419882
ins_pipe(ialu_reg_reg);
98429883
%}
98439884

9844-
instruct addP_reg_reg_lsl(iRegPNoSp dst, iRegP src1, iRegL src2, immIScale scale) %{
9885+
instruct addP_reg_reg_lsl(iRegPNoSp dst, iRegPorL2P src1, iRegL src2, immIScale scale) %{
98459886
match(Set dst (AddP src1 (LShiftL src2 scale)));
98469887

98479888
ins_cost(1.9 * INSN_COST);
@@ -9856,7 +9897,7 @@ instruct addP_reg_reg_lsl(iRegPNoSp dst, iRegP src1, iRegL src2, immIScale scale
98569897
ins_pipe(ialu_reg_reg_shift);
98579898
%}
98589899

9859-
instruct addP_reg_reg_ext_shift(iRegPNoSp dst, iRegP src1, iRegIorL2I src2, immIScale scale) %{
9900+
instruct addP_reg_reg_ext_shift(iRegPNoSp dst, iRegPorL2P src1, iRegIorL2I src2, immIScale scale) %{
98609901
match(Set dst (AddP src1 (LShiftL (ConvI2L src2) scale)));
98619902

98629903
ins_cost(1.9 * INSN_COST);
@@ -9889,7 +9930,7 @@ instruct lshift_ext(iRegLNoSp dst, iRegIorL2I src, immI scale, rFlagsReg cr) %{
98899930
// Pointer Immediate Addition
98909931
// n.b. this needs to be more expensive than using an indirect memory
98919932
// operand
9892-
instruct addP_reg_imm(iRegPNoSp dst, iRegP src1, immLAddSub src2) %{
9933+
instruct addP_reg_imm(iRegPNoSp dst, iRegPorL2P src1, immLAddSub src2) %{
98939934
match(Set dst (AddP src1 src2));
98949935

98959936
ins_cost(INSN_COST);

src/hotspot/cpu/aarch64/gc/shenandoah/c1/shenandoahBarrierSetC1_aarch64.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@ void LIR_OpShenandoahCompareAndSwap::emit_code(LIR_Assembler* masm) {
4141
Register tmp2 = _tmp2->as_register();
4242
Register result = result_opr()->as_register();
4343

44-
ShenandoahBarrierSet::assembler()->iu_barrier(masm->masm(), newval, rscratch2);
45-
4644
if (UseCompressedOops) {
4745
__ encode_heap_oop(tmp1, cmpval);
4846
cmpval = tmp1;
@@ -102,10 +100,6 @@ LIR_Opr ShenandoahBarrierSetC1::atomic_xchg_at_resolved(LIRAccess& access, LIRIt
102100
value.load_item();
103101
LIR_Opr value_opr = value.result();
104102

105-
if (access.is_oop()) {
106-
value_opr = iu_barrier(access.gen(), value_opr, access.access_emit_info(), access.decorators());
107-
}
108-
109103
assert(type == T_INT || is_reference_type(type) LP64_ONLY( || type == T_LONG ), "unexpected type");
110104
LIR_Opr tmp = gen->new_register(T_INT);
111105
__ xchg(access.resolved_addr(), value_opr, result, tmp);

src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, Dec
4747
Register src, Register dst, Register count, RegSet saved_regs) {
4848
if (is_oop) {
4949
bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0;
50-
if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahIUBarrier || ShenandoahLoadRefBarrier) {
50+
if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahLoadRefBarrier) {
5151

5252
Label done;
5353

@@ -300,14 +300,6 @@ void ShenandoahBarrierSetAssembler::load_reference_barrier(MacroAssembler* masm,
300300
__ leave();
301301
}
302302

303-
void ShenandoahBarrierSetAssembler::iu_barrier(MacroAssembler* masm, Register dst, Register tmp) {
304-
if (ShenandoahIUBarrier) {
305-
__ push_call_clobbered_registers();
306-
satb_write_barrier_pre(masm, noreg, dst, rthread, tmp, rscratch1, true, false);
307-
__ pop_call_clobbered_registers();
308-
}
309-
}
310-
311303
//
312304
// Arguments:
313305
//
@@ -398,8 +390,7 @@ void ShenandoahBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet
398390
if (val == noreg) {
399391
BarrierSetAssembler::store_at(masm, decorators, type, Address(tmp3, 0), noreg, noreg, noreg, noreg);
400392
} else {
401-
iu_barrier(masm, val, tmp1);
402-
// G1 barrier needs uncompressed oop for region cross check.
393+
// Barrier needs uncompressed oop for region cross check.
403394
Register new_val = val;
404395
if (UseCompressedOops) {
405396
new_val = rscratch2;

src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,6 @@ class ShenandoahBarrierSetAssembler: public BarrierSetAssembler {
6060
void load_reference_barrier(MacroAssembler* masm, Register dst, Address load_addr, DecoratorSet decorators);
6161

6262
public:
63-
64-
void iu_barrier(MacroAssembler* masm, Register dst, Register tmp);
65-
6663
virtual NMethodPatchingType nmethod_patching_type() { return NMethodPatchingType::conc_data_patch; }
6764

6865
#ifdef COMPILER1

src/hotspot/cpu/aarch64/gc/x/x_aarch64.ad

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (c) 2019, 2023, Oracle and/or its affiliates. All rights reserved.
2+
// Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved.
33
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
//
55
// This code is free software; you can redistribute it and/or modify it
@@ -62,7 +62,13 @@ instruct xLoadP(iRegPNoSp dst, memory8 mem, rFlagsReg cr)
6262
format %{ "ldr $dst, $mem" %}
6363

6464
ins_encode %{
65-
const Address ref_addr = mem2address($mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp);
65+
Address ref_addr = mem2address($mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp);
66+
if (ref_addr.getMode() == Address::base_plus_offset) {
67+
// Fix up any out-of-range offsets.
68+
assert_different_registers(rscratch1, as_Register($mem$$base));
69+
assert_different_registers(rscratch1, $dst$$Register);
70+
ref_addr = __ legitimize_address(ref_addr, 8, rscratch1);
71+
}
6672
__ ldr($dst$$Register, ref_addr);
6773
x_load_barrier(masm, this, ref_addr, $dst$$Register, rscratch2 /* tmp */, barrier_data());
6874
%}

src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (c) 2019, 2023, Oracle and/or its affiliates. All rights reserved.
2+
// Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved.
33
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
//
55
// This code is free software; you can redistribute it and/or modify it
@@ -111,7 +111,13 @@ instruct zLoadP(iRegPNoSp dst, memory8 mem, rFlagsReg cr)
111111
format %{ "ldr $dst, $mem" %}
112112

113113
ins_encode %{
114-
const Address ref_addr = mem2address($mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp);
114+
Address ref_addr = mem2address($mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp);
115+
if (ref_addr.getMode() == Address::base_plus_offset) {
116+
// Fix up any out-of-range offsets.
117+
assert_different_registers(rscratch2, as_Register($mem$$base));
118+
assert_different_registers(rscratch2, $dst$$Register);
119+
ref_addr = __ legitimize_address(ref_addr, 8, rscratch2);
120+
}
115121
__ ldr($dst$$Register, ref_addr);
116122
z_load_barrier(masm, this, ref_addr, $dst$$Register, rscratch1);
117123
%}

0 commit comments

Comments
 (0)