< prev index next >
src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp
Print this page
rev 53735 : AArch64 support for ValueTypes
@@ -81,10 +81,16 @@
// Load object header
ldr(hdr, Address(obj, hdr_offset));
// and mark it as unlocked
orr(hdr, hdr, markOopDesc::unlocked_value);
+
+ if (EnableValhalla && !UseBiasedLocking) {
+ // Mask always_locked bit such that we go to the slow path if object is a value type
+ andr(hdr, hdr, ~markOopDesc::biased_lock_bit_in_place);
+ }
+
// save unlocked object header into the displaced header location on the stack
str(hdr, Address(disp_hdr, 0));
// test if object header is still the same (i.e. unlocked), and if so, store the
// displaced header address in the object header - if it is not the same, get the
// object header instead
< prev index next >