diff options
author | Hiroshi Yamauchi <yamauchi@google.com> | 2014-02-27 14:44:36 -0800 |
---|---|---|
committer | Hiroshi Yamauchi <yamauchi@google.com> | 2014-03-05 19:20:14 -0800 |
commit | e63a745f26fec5a5b4162fc83f6e88a1f696c30c (patch) | |
tree | f26e1429c8226c5dde5ee4c361a57754ff46298c /compiler/utils/arm/assembler_arm.cc | |
parent | e26baffe7f9e2a54f276f5c65e48454e413683ba (diff) | |
download | android_art-e63a745f26fec5a5b4162fc83f6e88a1f696c30c.tar.gz android_art-e63a745f26fec5a5b4162fc83f6e88a1f696c30c.tar.bz2 android_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/arm/assembler_arm.cc')
-rw-r--r-- | compiler/utils/arm/assembler_arm.cc | 3 |
1 files changed, 3 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) { |