< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp

Print this page

        

*** 1,8 **** /* * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2014, 2015, Red Hat Inc. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,8 ---- /* * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2014, 2018, Red Hat, Inc. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 2588,2600 **** patch_end[-2] = (u_int64_t)prolog_ptr; patch_end[-1] = calltype; } #endif ! void MacroAssembler::push_call_clobbered_registers() { int step = 4 * wordSize; - push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp); sub(sp, sp, step); mov(rscratch1, -step); // Push v0-v7, v16-v31. for (int i = 31; i>= 4; i -= 4) { if (i <= v7->encoding() || i >= v16->encoding()) --- 2588,2599 ---- patch_end[-2] = (u_int64_t)prolog_ptr; patch_end[-1] = calltype; } #endif ! void MacroAssembler::push_call_clobbered_fp_registers() { int step = 4 * wordSize; sub(sp, sp, step); mov(rscratch1, -step); // Push v0-v7, v16-v31. for (int i = 31; i>= 4; i -= 4) { if (i <= v7->encoding() || i >= v16->encoding())
*** 2603,2619 **** } st1(as_FloatRegister(0), as_FloatRegister(1), as_FloatRegister(2), as_FloatRegister(3), T1D, Address(sp)); } ! void MacroAssembler::pop_call_clobbered_registers() { for (int i = 0; i < 32; i += 4) { if (i <= v7->encoding() || i >= v16->encoding()) ld1(as_FloatRegister(i), as_FloatRegister(i+1), as_FloatRegister(i+2), as_FloatRegister(i+3), T1D, Address(post(sp, 4 * wordSize))); } pop(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp); } void MacroAssembler::push_CPU_state(bool save_vectors) { int step = (save_vectors ? 8 : 4) * wordSize; --- 2602,2626 ---- } st1(as_FloatRegister(0), as_FloatRegister(1), as_FloatRegister(2), as_FloatRegister(3), T1D, Address(sp)); } ! void MacroAssembler::pop_call_clobbered_fp_registers() { for (int i = 0; i < 32; i += 4) { if (i <= v7->encoding() || i >= v16->encoding()) ld1(as_FloatRegister(i), as_FloatRegister(i+1), as_FloatRegister(i+2), as_FloatRegister(i+3), T1D, Address(post(sp, 4 * wordSize))); } + } + + void MacroAssembler::push_call_clobbered_registers() { + push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp); + push_call_clobbered_fp_registers(); + } + void MacroAssembler::pop_call_clobbered_registers() { + pop_call_clobbered_fp_registers(); pop(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp); } void MacroAssembler::push_CPU_state(bool save_vectors) { int step = (save_vectors ? 8 : 4) * wordSize;
*** 3994,4003 **** --- 4001,4020 ---- narrowKlass nk = Klass::encode_klass(k); movz(dst, (nk >> 16), 16); movk(dst, nk & 0xffff); } + void MacroAssembler::resolve_for_read(DecoratorSet decorators, Register obj) { + BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler(); + bs->resolve_for_read(this, decorators, obj); + } + + void MacroAssembler::resolve_for_write(DecoratorSet decorators, Register obj) { + BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler(); + bs->resolve_for_write(this, decorators, obj); + } + void MacroAssembler::access_load_at(BasicType type, DecoratorSet decorators, Register dst, Address src, Register tmp1, Register thread_tmp) { BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler(); decorators = AccessInternal::decorator_fixup(decorators);
< prev index next >