Mercurial > hg > openjdk > aarch64-port > hotspot
changeset 8565:f50e867292b6
8138575: Improve generated code for profile counters
Reviewed-by: kvn
author | aph |
---|---|
date | Tue, 29 Sep 2015 17:01:37 +0000 |
parents | be6204a5856d |
children | 5b75aaed29fc |
files | src/cpu/aarch64/vm/macroAssembler_aarch64.cpp src/cpu/aarch64/vm/macroAssembler_aarch64.hpp |
diffstat | 2 files changed, 19 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Wed Sep 30 13:23:46 2015 +0000 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Tue Sep 29 17:01:37 2015 +0000 @@ -2887,6 +2887,24 @@ _masm->bind(_label); } +void MacroAssembler::addptr(const Address &dst, int32_t src) { + Address adr; + switch(dst.getMode()) { + case Address::base_plus_offset: + // This is the expected mode, although we allow all the other + // forms below. + adr = form_address(rscratch2, dst.base(), dst.offset(), LogBytesPerWord); + break; + default: + lea(rscratch2, dst); + adr = Address(rscratch2); + break; + } + ldr(rscratch1, adr); + add(rscratch1, rscratch1, src); + str(rscratch1, adr); +} + void MacroAssembler::cmpptr(Register src1, Address src2) { unsigned long offset; adrp(rscratch1, src2, offset);
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Wed Sep 30 13:23:46 2015 +0000 +++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Tue Sep 29 17:01:37 2015 +0000 @@ -899,13 +899,7 @@ // Arithmetics - void addptr(Address dst, int32_t src) { - lea(rscratch2, dst); - ldr(rscratch1, Address(rscratch2)); - add(rscratch1, rscratch1, src); - str(rscratch1, Address(rscratch2)); - } - + void addptr(const Address &dst, int32_t src); void cmpptr(Register src1, Address src2); void cmpxchgptr(Register oldv, Register newv, Register addr, Register tmp,