Get heap poisoning working in 64-bit.
This adds the reference negate code in arm64 and x86_64 that's used by
the jni compiler.
Bug: 12687968
Bug: 8367515
Change-Id: I28a44bcead1ee613866645620b4eaf54fad6a3aa
diff --git a/compiler/utils/arm64/assembler_arm64.cc b/compiler/utils/arm64/assembler_arm64.cc
index 3edf59b..c82b4f0 100644
--- a/compiler/utils/arm64/assembler_arm64.cc
+++ b/compiler/utils/arm64/assembler_arm64.cc
@@ -299,6 +299,10 @@
CHECK(dst.IsCoreRegister() && base.IsCoreRegister());
LoadWFromOffset(kLoadWord, dst.AsOverlappingCoreRegisterLow(), base.AsCoreRegister(),
offs.Int32Value());
+ if (kPoisonHeapReferences) {
+ WRegister ref_reg = dst.AsOverlappingCoreRegisterLow();
+ ___ Neg(reg_w(ref_reg), vixl::Operand(reg_w(ref_reg)));
+ }
}
void Arm64Assembler::LoadRawPtr(ManagedRegister m_dst, ManagedRegister m_base, Offset offs) {