summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/utils/arm/assembler_arm.cc3
-rw-r--r--compiler/utils/mips/assembler_mips.cc3
-rw-r--r--compiler/utils/x86/assembler_x86.cc3
3 files changed, 9 insertions, 0 deletions
diff --git a/compiler/utils/arm/assembler_arm.cc b/compiler/utils/arm/assembler_arm.cc
index 828dffafa1..dbd078a81c 100644
--- a/compiler/utils/arm/assembler_arm.cc
+++ b/compiler/utils/arm/assembler_arm.cc
@@ -1550,6 +1550,9 @@ void ArmAssembler::LoadRef(ManagedRegister mdest, ManagedRegister base,
CHECK(dst.IsCoreRegister() && dst.IsCoreRegister()) << dst;
LoadFromOffset(kLoadWord, dst.AsCoreRegister(),
base.AsArm().AsCoreRegister(), offs.Int32Value());
+ if (kPoisonHeapReferences) {
+ rsb(dst.AsCoreRegister(), dst.AsCoreRegister(), ShifterOperand(0));
+ }
}
void ArmAssembler::LoadRef(ManagedRegister mdest, FrameOffset src) {
diff --git a/compiler/utils/mips/assembler_mips.cc b/compiler/utils/mips/assembler_mips.cc
index fdd2bab4da..ce21b84867 100644
--- a/compiler/utils/mips/assembler_mips.cc
+++ b/compiler/utils/mips/assembler_mips.cc
@@ -684,6 +684,9 @@ void MipsAssembler::LoadRef(ManagedRegister mdest, ManagedRegister base,
CHECK(dest.IsCoreRegister() && dest.IsCoreRegister());
LoadFromOffset(kLoadWord, dest.AsCoreRegister(),
base.AsMips().AsCoreRegister(), offs.Int32Value());
+ if (kPoisonHeapReferences) {
+ Subu(dest.AsCoreRegister(), ZERO, dest.AsCoreRegister());
+ }
}
void MipsAssembler::LoadRawPtr(ManagedRegister mdest, ManagedRegister base,
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc
index 136d2486df..16165029f4 100644
--- a/compiler/utils/x86/assembler_x86.cc
+++ b/compiler/utils/x86/assembler_x86.cc
@@ -1553,6 +1553,9 @@ void X86Assembler::LoadRef(ManagedRegister mdest, ManagedRegister base,
X86ManagedRegister dest = mdest.AsX86();
CHECK(dest.IsCpuRegister() && dest.IsCpuRegister());
movl(dest.AsCpuRegister(), Address(base.AsX86().AsCpuRegister(), offs));
+ if (kPoisonHeapReferences) {
+ negl(dest.AsCpuRegister());
+ }
}
void X86Assembler::LoadRawPtr(ManagedRegister mdest, ManagedRegister base,