summaryrefslogtreecommitdiffstats
path: root/compiler/utils/x86/assembler_x86.cc
diff options
context:
space:
mode:
authorHiroshi Yamauchi <yamauchi@google.com>2014-02-27 14:44:36 -0800
committerHiroshi Yamauchi <yamauchi@google.com>2014-03-05 19:20:14 -0800
commite63a745f26fec5a5b4162fc83f6e88a1f696c30c (patch)
treef26e1429c8226c5dde5ee4c361a57754ff46298c /compiler/utils/x86/assembler_x86.cc
parente26baffe7f9e2a54f276f5c65e48454e413683ba (diff)
downloadart-e63a745f26fec5a5b4162fc83f6e88a1f696c30c.tar.gz
art-e63a745f26fec5a5b4162fc83f6e88a1f696c30c.tar.bz2
art-e63a745f26fec5a5b4162fc83f6e88a1f696c30c.zip
Make heap reference poisoning work with the interpreter.
It is disabled by default. Bug: 12687968 Change-Id: Iee0cad647f341a7b566f4cf74c2770d1c19312c9
Diffstat (limited to 'compiler/utils/x86/assembler_x86.cc')
-rw-r--r--compiler/utils/x86/assembler_x86.cc3
1 files changed, 3 insertions, 0 deletions
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,