6968 // r0_tmp is used as expected value (0), recv is the new value
6969 z_lghi(r0_tmp, 0);
6970 z_csg(r0_tmp, recv, 0, receiver_addr);
6971 }
6972
6973 // CAS success means the slot now has the receiver we want. CAS failure means
6974 // something had claimed the slot concurrently: it can be the same receiver we want,
6975 // or something else. Since this is a slow path, we can optimize for code density,
6976 // and just restart the search from the beginning.
6977 z_bru(L_restart);
6978
6979 // Found a receiver, convert its slot offset to corresponding count offset.
6980 bind(L_found_recv);
6981 add2reg(offset, receiver_to_count_step);
6982
6983 // Finally, update the counter
6984 bind(L_count_update);
6985 z_agr(offset, mdp);
6986 add2mem_64(Address(offset), DataLayout::counter_increment, r0_tmp);
6987 }
|
6968 // r0_tmp is used as expected value (0), recv is the new value
6969 z_lghi(r0_tmp, 0);
6970 z_csg(r0_tmp, recv, 0, receiver_addr);
6971 }
6972
6973 // CAS success means the slot now has the receiver we want. CAS failure means
6974 // something had claimed the slot concurrently: it can be the same receiver we want,
6975 // or something else. Since this is a slow path, we can optimize for code density,
6976 // and just restart the search from the beginning.
6977 z_bru(L_restart);
6978
6979 // Found a receiver, convert its slot offset to corresponding count offset.
6980 bind(L_found_recv);
6981 add2reg(offset, receiver_to_count_step);
6982
6983 // Finally, update the counter
6984 bind(L_count_update);
6985 z_agr(offset, mdp);
6986 add2mem_64(Address(offset), DataLayout::counter_increment, r0_tmp);
6987 }
6988
6989 // Unimplemented methods for inline types.
6990 int MacroAssembler::store_inline_type_fields_to_buf(ciInlineKlass* vk, bool from_interpreter) {
6991 Unimplemented();
6992 }
6993
6994 bool MacroAssembler::move_helper(VMReg from, VMReg to, BasicType bt, RegState reg_state[]) {
6995 Unimplemented();
6996 }
6997
6998 bool MacroAssembler::unpack_inline_helper(const GrowableArray<SigEntry>* sig, int& sig_index,
6999 VMReg from, int& from_index, VMRegPair* to, int to_count, int& to_index,
7000 RegState reg_state[]) {
7001 Unimplemented();
7002 }
7003
7004 bool MacroAssembler::pack_inline_helper(const GrowableArray<SigEntry>* sig, int& sig_index, int vtarg_index,
7005 VMRegPair* from, int from_count, int& from_index, VMReg to,
7006 RegState reg_state[], Register val_array) {
7007 Unimplemented();
7008 }
7009
7010 int MacroAssembler::extend_stack_for_inline_args(int args_on_stack) {
7011 Unimplemented();
7012 }
7013
7014 VMReg MacroAssembler::spill_reg_for(VMReg reg) {
7015 Unimplemented();
7016 }
|