Skip to content

Commit 847b107

Browse files
committed
8365191: Cleanup after removing LockingMode related code
Reviewed-by: coleenp, dholmes, yzheng, mdoerr, ayang, fyang, amitkumar
1 parent e6ddb39 commit 847b107

34 files changed

+125
-167
lines changed

src/hotspot/cpu/aarch64/c1_CodeStubs_aarch64.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,10 @@ void MonitorEnterStub::emit_code(LIR_Assembler* ce) {
216216

217217
void MonitorExitStub::emit_code(LIR_Assembler* ce) {
218218
__ bind(_entry);
219-
if (_compute_lock) {
220-
// lock_reg was destroyed by fast unlocking attempt => recompute it
221-
ce->monitor_address(_monitor_ix, _lock_reg);
222-
}
219+
220+
// lock_reg was destroyed by fast unlocking attempt => recompute it
221+
ce->monitor_address(_monitor_ix, _lock_reg);
222+
223223
ce->store_parameter(_lock_reg->as_register(), 0);
224224
// note: non-blocking leaf routine => no call info needed
225225
StubId exit_id;

src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ int LIR_Assembler::emit_unwind_handler() {
409409
MonitorExitStub* stub = nullptr;
410410
if (method()->is_synchronized()) {
411411
monitor_address(0, FrameMap::r0_opr);
412-
stub = new MonitorExitStub(FrameMap::r0_opr, true, 0);
412+
stub = new MonitorExitStub(FrameMap::r0_opr, 0);
413413
__ unlock_object(r5, r4, r0, r6, *stub->entry());
414414
__ bind(*stub->continuation());
415415
}
@@ -2481,15 +2481,13 @@ void LIR_Assembler::emit_lock(LIR_OpLock* op) {
24812481
Register lock = op->lock_opr()->as_register();
24822482
Register temp = op->scratch_opr()->as_register();
24832483
if (op->code() == lir_lock) {
2484-
assert(BasicLock::displaced_header_offset_in_bytes() == 0, "lock_reg must point to the displaced header");
24852484
// add debug info for NullPointerException only if one is possible
24862485
int null_check_offset = __ lock_object(hdr, obj, lock, temp, *op->stub()->entry());
24872486
if (op->info() != nullptr) {
24882487
add_debug_info_for_null_check(null_check_offset, op->info());
24892488
}
24902489
// done
24912490
} else if (op->code() == lir_unlock) {
2492-
assert(BasicLock::displaced_header_offset_in_bytes() == 0, "lock_reg must point to the displaced header");
24932491
__ unlock_object(hdr, obj, lock, temp, *op->stub()->entry());
24942492
} else {
24952493
Unimplemented();

src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,28 +59,28 @@ void C1_MacroAssembler::float_cmp(bool is_float, int unordered_result,
5959
}
6060
}
6161

62-
int C1_MacroAssembler::lock_object(Register hdr, Register obj, Register disp_hdr, Register temp, Label& slow_case) {
63-
assert_different_registers(hdr, obj, disp_hdr, temp, rscratch2);
62+
int C1_MacroAssembler::lock_object(Register hdr, Register obj, Register basic_lock, Register temp, Label& slow_case) {
63+
assert_different_registers(hdr, obj, basic_lock, temp, rscratch2);
6464
int null_check_offset = -1;
6565

6666
verify_oop(obj);
6767

6868
// save object being locked into the BasicObjectLock
69-
str(obj, Address(disp_hdr, BasicObjectLock::obj_offset()));
69+
str(obj, Address(basic_lock, BasicObjectLock::obj_offset()));
7070

7171
null_check_offset = offset();
7272

73-
lightweight_lock(disp_hdr, obj, hdr, temp, rscratch2, slow_case);
73+
lightweight_lock(basic_lock, obj, hdr, temp, rscratch2, slow_case);
7474

7575
return null_check_offset;
7676
}
7777

7878

79-
void C1_MacroAssembler::unlock_object(Register hdr, Register obj, Register disp_hdr, Register temp, Label& slow_case) {
80-
assert_different_registers(hdr, obj, disp_hdr, temp, rscratch2);
79+
void C1_MacroAssembler::unlock_object(Register hdr, Register obj, Register basic_lock, Register temp, Label& slow_case) {
80+
assert_different_registers(hdr, obj, basic_lock, temp, rscratch2);
8181

8282
// load object
83-
ldr(obj, Address(disp_hdr, BasicObjectLock::obj_offset()));
83+
ldr(obj, Address(basic_lock, BasicObjectLock::obj_offset()));
8484
verify_oop(obj);
8585

8686
lightweight_unlock(obj, hdr, temp, rscratch2, slow_case);

src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.hpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved.
33
* Copyright (c) 2014, 2021, Red Hat Inc. All rights reserved.
44
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
55
*
@@ -55,19 +55,19 @@ using MacroAssembler::null_check;
5555
Register result);
5656

5757
// locking
58-
// hdr : must be r0, contents destroyed
59-
// obj : must point to the object to lock, contents preserved
60-
// disp_hdr: must point to the displaced header location, contents preserved
61-
// temp : temporary register, must not be rscratch1 or rscratch2
58+
// hdr : must be r0, contents destroyed
59+
// obj : must point to the object to lock, contents preserved
60+
// basic_lock: must point to the basic lock, contents preserved
61+
// temp : temporary register, must not be rscratch1 or rscratch2
6262
// returns code offset at which to add null check debug information
63-
int lock_object (Register swap, Register obj, Register disp_hdr, Register temp, Label& slow_case);
63+
int lock_object (Register swap, Register obj, Register basic_lock, Register temp, Label& slow_case);
6464

6565
// unlocking
66-
// hdr : contents destroyed
67-
// obj : must point to the object to lock, contents preserved
68-
// disp_hdr: must be r0 & must point to the displaced header location, contents destroyed
69-
// temp : temporary register, must not be rscratch1 or rscratch2
70-
void unlock_object(Register swap, Register obj, Register lock, Register temp, Label& slow_case);
66+
// hdr : contents destroyed
67+
// obj : must point to the object to lock, contents preserved
68+
// basic_lock: must be r0 & must point to the basic lock, contents destroyed
69+
// temp : temporary register, must not be rscratch1 or rscratch2
70+
void unlock_object(Register swap, Register obj, Register basic_lock, Register temp, Label& slow_case);
7171

7272
void initialize_object(
7373
Register obj, // result: pointer to object after successful allocation

src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1761,9 +1761,6 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
17611761
Label lock_done;
17621762

17631763
if (method->is_synchronized()) {
1764-
Label count;
1765-
const int mark_word_offset = BasicLock::displaced_header_offset_in_bytes();
1766-
17671764
// Get the handle (the 2nd argument)
17681765
__ mov(oop_handle_reg, c_rarg1);
17691766

src/hotspot/cpu/arm/c1_CodeStubs_arm.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,10 @@ void MonitorEnterStub::emit_code(LIR_Assembler* ce) {
200200

201201
void MonitorExitStub::emit_code(LIR_Assembler* ce) {
202202
__ bind(_entry);
203-
if (_compute_lock) {
204-
ce->monitor_address(_monitor_ix, _lock_reg);
205-
}
203+
204+
// lock_reg was destroyed by fast unlocking attempt => recompute it
205+
ce->monitor_address(_monitor_ix, _lock_reg);
206+
206207
const Register lock_reg = _lock_reg->as_pointer_register();
207208

208209
ce->verify_reserved_argument_area_size(1);

src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ int LIR_Assembler::emit_unwind_handler() {
245245
MonitorExitStub* stub = nullptr;
246246
if (method()->is_synchronized()) {
247247
monitor_address(0, FrameMap::R0_opr);
248-
stub = new MonitorExitStub(FrameMap::R0_opr, true, 0);
248+
stub = new MonitorExitStub(FrameMap::R0_opr, 0);
249249
__ unlock_object(R2, R1, R0, *stub->entry());
250250
__ bind(*stub->continuation());
251251
}
@@ -2427,7 +2427,6 @@ void LIR_Assembler::emit_lock(LIR_OpLock* op) {
24272427
Register lock = op->lock_opr()->as_pointer_register();
24282428

24292429
if (op->code() == lir_lock) {
2430-
assert(BasicLock::displaced_header_offset_in_bytes() == 0, "lock_reg must point to the displaced header");
24312430
int null_check_offset = __ lock_object(hdr, obj, lock, *op->stub()->entry());
24322431
if (op->info() != nullptr) {
24332432
add_debug_info_for_null_check(null_check_offset, op->info());

src/hotspot/cpu/arm/c1_MacroAssembler_arm.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -176,17 +176,17 @@ void C1_MacroAssembler::allocate_array(Register obj, Register len,
176176
initialize_object(obj, tmp1, klass, len, tmp2, tmp3, header_size_in_bytes, -1, /* is_tlab_allocated */ UseTLAB);
177177
}
178178

179-
int C1_MacroAssembler::lock_object(Register hdr, Register obj, Register disp_hdr, Label& slow_case) {
179+
int C1_MacroAssembler::lock_object(Register hdr, Register obj, Register basic_lock, Label& slow_case) {
180180
int null_check_offset = 0;
181181

182182
const Register tmp2 = Rtemp; // Rtemp should be free at c1 LIR level
183-
assert_different_registers(hdr, obj, disp_hdr, tmp2);
183+
assert_different_registers(hdr, obj, basic_lock, tmp2);
184184

185185
assert(BasicObjectLock::lock_offset() == 0, "adjust this code");
186186
assert(oopDesc::mark_offset_in_bytes() == 0, "Required by atomic instructions");
187187

188188
// save object being locked into the BasicObjectLock
189-
str(obj, Address(disp_hdr, BasicObjectLock::obj_offset()));
189+
str(obj, Address(basic_lock, BasicObjectLock::obj_offset()));
190190

191191
null_check_offset = offset();
192192

@@ -197,26 +197,26 @@ int C1_MacroAssembler::lock_object(Register hdr, Register obj, Register disp_hdr
197197
b(slow_case, ne);
198198
}
199199

200-
Register t1 = disp_hdr; // Needs saving, probably
201-
Register t2 = hdr; // blow
202-
Register t3 = Rtemp; // blow
200+
Register t1 = basic_lock; // Needs saving, probably
201+
Register t2 = hdr; // blow
202+
Register t3 = Rtemp; // blow
203203

204204
lightweight_lock(obj, t1, t2, t3, 1 /* savemask - save t1 */, slow_case);
205205
// Success: fall through
206206
return null_check_offset;
207207
}
208208

209-
void C1_MacroAssembler::unlock_object(Register hdr, Register obj, Register disp_hdr, Label& slow_case) {
210-
assert_different_registers(hdr, obj, disp_hdr, Rtemp);
209+
void C1_MacroAssembler::unlock_object(Register hdr, Register obj, Register basic_lock, Label& slow_case) {
210+
assert_different_registers(hdr, obj, basic_lock, Rtemp);
211211

212212
assert(BasicObjectLock::lock_offset() == 0, "adjust this code");
213213
assert(oopDesc::mark_offset_in_bytes() == 0, "Required by atomic instructions");
214214

215-
ldr(obj, Address(disp_hdr, BasicObjectLock::obj_offset()));
215+
ldr(obj, Address(basic_lock, BasicObjectLock::obj_offset()));
216216

217-
Register t1 = disp_hdr; // Needs saving, probably
218-
Register t2 = hdr; // blow
219-
Register t3 = Rtemp; // blow
217+
Register t1 = basic_lock; // Needs saving, probably
218+
Register t2 = hdr; // blow
219+
Register t3 = Rtemp; // blow
220220

221221
lightweight_unlock(obj, t1, t2, t3, 1 /* savemask - save t1 */, slow_case);
222222
// Success: fall through

src/hotspot/cpu/arm/c1_MacroAssembler_arm.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2008, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2008, 2025, 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
@@ -59,9 +59,9 @@
5959
max_array_allocation_length = 0x01000000
6060
};
6161

62-
int lock_object(Register hdr, Register obj, Register disp_hdr, Label& slow_case);
62+
int lock_object(Register hdr, Register obj, Register basic_lock, Label& slow_case);
6363

64-
void unlock_object(Register hdr, Register obj, Register disp_hdr, Label& slow_case);
64+
void unlock_object(Register hdr, Register obj, Register basic_lock, Label& slow_case);
6565

6666
// This platform only uses signal-based null checks. The Label is not needed.
6767
void null_check(Register r, Label *Lnull = nullptr) { MacroAssembler::null_check(r); }

src/hotspot/cpu/arm/sharedRuntime_arm.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,7 +1128,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
11281128

11291129
const Register sync_handle = R5;
11301130
const Register sync_obj = R6;
1131-
const Register disp_hdr = altFP_7_11;
1131+
const Register basic_lock = altFP_7_11;
11321132
const Register tmp = R8;
11331133

11341134
Label slow_lock, lock_done, fast_lock;
@@ -1139,7 +1139,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
11391139
__ mov(sync_handle, R1);
11401140

11411141
log_trace(fastlock)("SharedRuntime lock fast");
1142-
__ lightweight_lock(sync_obj /* object */, disp_hdr /* t1 */, tmp /* t2 */, Rtemp /* t3 */,
1142+
__ lightweight_lock(sync_obj /* object */, basic_lock /* t1 */, tmp /* t2 */, Rtemp /* t3 */,
11431143
0x7 /* savemask */, slow_lock);
11441144
// Fall through to lock_done
11451145
__ bind(lock_done);
@@ -1254,7 +1254,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
12541254

12551255
// last_Java_frame is already set, so do call_VM manually; no exception can occur
12561256
__ mov(R0, sync_obj);
1257-
__ mov(R1, disp_hdr);
1257+
__ mov(R1, basic_lock);
12581258
__ mov(R2, Rthread);
12591259
__ call(CAST_FROM_FN_PTR(address, SharedRuntime::complete_monitor_locking_C));
12601260

@@ -1269,12 +1269,12 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
12691269

12701270
// Clear pending exception before reentering VM.
12711271
// Can store the oop in register since it is a leaf call.
1272-
assert_different_registers(Rtmp_save1, sync_obj, disp_hdr);
1272+
assert_different_registers(Rtmp_save1, sync_obj, basic_lock);
12731273
__ ldr(Rtmp_save1, Address(Rthread, Thread::pending_exception_offset()));
12741274
Register zero = __ zero_register(Rtemp);
12751275
__ str(zero, Address(Rthread, Thread::pending_exception_offset()));
12761276
__ mov(R0, sync_obj);
1277-
__ mov(R1, disp_hdr);
1277+
__ mov(R1, basic_lock);
12781278
__ mov(R2, Rthread);
12791279
__ call(CAST_FROM_FN_PTR(address, SharedRuntime::complete_monitor_unlocking_C));
12801280
__ str(Rtmp_save1, Address(Rthread, Thread::pending_exception_offset()));

0 commit comments

Comments
 (0)