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 }
|