hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
changeset 33175 c8f3d95c66bc
parent 33061 69a83b5ce390
child 33193 c7ffe5c06513
--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Wed Sep 30 13:23:46 2015 +0000
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Tue Sep 29 17:01:37 2015 +0000
@@ -3039,6 +3039,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);