< prev index next >

src/hotspot/cpu/riscv/macroAssembler_riscv.cpp

Print this page

6969   bind(not_unlocked);
6970 #endif
6971 
6972   // Try to unlock. Transition lock bits 0b00 => 0b01
6973   assert(oopDesc::mark_offset_in_bytes() == 0, "required to avoid lea");
6974   ori(t, mark, markWord::unlocked_value);
6975   cmpxchg(/*addr*/ obj, /*expected*/ mark, /*new*/ t, Assembler::int64,
6976           /*acquire*/ Assembler::relaxed, /*release*/ Assembler::rl, /*result*/ t);
6977   beq(mark, t, unlocked);
6978 
6979   bind(push_and_slow);
6980   // Restore lock-stack and handle the unlock in runtime.
6981   DEBUG_ONLY(add(t, xthread, top);)
6982   DEBUG_ONLY(sd(obj, Address(t));)
6983   addiw(top, top, oopSize);
6984   sw(top, Address(xthread, JavaThread::lock_stack_top_offset()));
6985   j(slow);
6986 
6987   bind(unlocked);
6988 }






























6969   bind(not_unlocked);
6970 #endif
6971 
6972   // Try to unlock. Transition lock bits 0b00 => 0b01
6973   assert(oopDesc::mark_offset_in_bytes() == 0, "required to avoid lea");
6974   ori(t, mark, markWord::unlocked_value);
6975   cmpxchg(/*addr*/ obj, /*expected*/ mark, /*new*/ t, Assembler::int64,
6976           /*acquire*/ Assembler::relaxed, /*release*/ Assembler::rl, /*result*/ t);
6977   beq(mark, t, unlocked);
6978 
6979   bind(push_and_slow);
6980   // Restore lock-stack and handle the unlock in runtime.
6981   DEBUG_ONLY(add(t, xthread, top);)
6982   DEBUG_ONLY(sd(obj, Address(t));)
6983   addiw(top, top, oopSize);
6984   sw(top, Address(xthread, JavaThread::lock_stack_top_offset()));
6985   j(slow);
6986 
6987   bind(unlocked);
6988 }
6989 
6990 // Unimplemented methods for inline types.
6991 int MacroAssembler::store_inline_type_fields_to_buf(ciInlineKlass* vk, bool from_interpreter) {
6992    Unimplemented();
6993 }
6994 
6995 bool MacroAssembler::move_helper(VMReg from, VMReg to, BasicType bt, RegState reg_state[]) {
6996   Unimplemented();
6997 }
6998 
6999 bool MacroAssembler::unpack_inline_helper(const GrowableArray<SigEntry>* sig, int& sig_index,
7000                             VMReg from, int& from_index, VMRegPair* to, int to_count, int& to_index,
7001                             RegState reg_state[]) {
7002   Unimplemented();
7003 }
7004 
7005 bool MacroAssembler::pack_inline_helper(const GrowableArray<SigEntry>* sig, int& sig_index, int vtarg_index,
7006                           VMRegPair* from, int from_count, int& from_index, VMReg to,
7007                           RegState reg_state[], Register val_array) {
7008   Unimplemented();
7009 }
7010 
7011 int MacroAssembler::extend_stack_for_inline_args(int args_on_stack) {
7012   Unimplemented();
7013 }
7014 
7015 VMReg MacroAssembler::spill_reg_for(VMReg reg) {
7016   Unimplemented();
7017 }
< prev index next >