4689 beq(CR0, not_unlocked);
4690 stop("fast_unlock already unlocked");
4691 bind(not_unlocked);
4692 #endif
4693
4694 // Try to unlock. Transition lock bits 0b00 => 0b01
4695 atomically_flip_locked_state(/* is_unlock */ true, obj, t, push_and_slow, MacroAssembler::MemBarRel);
4696 b(unlocked);
4697
4698 bind(push_and_slow);
4699
4700 // Restore lock-stack and handle the unlock in runtime.
4701 lwz(top, in_bytes(JavaThread::lock_stack_top_offset()), R16_thread);
4702 DEBUG_ONLY(stdx(obj, R16_thread, top);)
4703 addi(top, top, oopSize);
4704 stw(top, in_bytes(JavaThread::lock_stack_top_offset()), R16_thread);
4705 b(slow);
4706
4707 bind(unlocked);
4708 }
|
4689 beq(CR0, not_unlocked);
4690 stop("fast_unlock already unlocked");
4691 bind(not_unlocked);
4692 #endif
4693
4694 // Try to unlock. Transition lock bits 0b00 => 0b01
4695 atomically_flip_locked_state(/* is_unlock */ true, obj, t, push_and_slow, MacroAssembler::MemBarRel);
4696 b(unlocked);
4697
4698 bind(push_and_slow);
4699
4700 // Restore lock-stack and handle the unlock in runtime.
4701 lwz(top, in_bytes(JavaThread::lock_stack_top_offset()), R16_thread);
4702 DEBUG_ONLY(stdx(obj, R16_thread, top);)
4703 addi(top, top, oopSize);
4704 stw(top, in_bytes(JavaThread::lock_stack_top_offset()), R16_thread);
4705 b(slow);
4706
4707 bind(unlocked);
4708 }
4709
4710 // Unimplemented methods for inline types.
4711 int MacroAssembler::store_inline_type_fields_to_buf(ciInlineKlass* vk, bool from_interpreter) {
4712 Unimplemented();
4713 }
4714
4715 bool MacroAssembler::move_helper(VMReg from, VMReg to, BasicType bt, RegState reg_state[]) {
4716 Unimplemented();
4717 }
4718
4719 bool MacroAssembler::unpack_inline_helper(const GrowableArray<SigEntry>* sig, int& sig_index,
4720 VMReg from, int& from_index, VMRegPair* to, int to_count, int& to_index,
4721 RegState reg_state[]) {
4722 Unimplemented();
4723 }
4724
4725 bool MacroAssembler::pack_inline_helper(const GrowableArray<SigEntry>* sig, int& sig_index, int vtarg_index,
4726 VMRegPair* from, int from_count, int& from_index, VMReg to,
4727 RegState reg_state[], Register val_array) {
4728 Unimplemented();
4729 }
4730
4731 int MacroAssembler::extend_stack_for_inline_args(int args_on_stack) {
4732 Unimplemented();
4733 }
4734
4735 VMReg MacroAssembler::spill_reg_for(VMReg reg) {
4736 Unimplemented();
4737 }
|