summaryrefslogtreecommitdiffstats
path: root/compiler
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2015-07-06 14:00:39 -0700
committerAndreas Gampe <agampe@google.com>2015-07-07 09:46:45 -0700
commitdb05e31018ef4d1b46a43924b370f061c5457626 (patch)
tree84a2f1e4da8b75c9a88f6448cb671c70a7e2bd5d /compiler
parentccbbda2b716bcc0dd9ad7b6c7bf9079efa3fca23 (diff)
downloadart-db05e31018ef4d1b46a43924b370f061c5457626.zip
art-db05e31018ef4d1b46a43924b370f061c5457626.tar.gz
art-db05e31018ef4d1b46a43924b370f061c5457626.tar.bz2
ART: Fix opsize in LoadArgDirect
If the destination register is a reference, use kReference for the op size. Bug: 22244733 (cherry picked from commit 185a5586c8b796e770e9b4b7ac2befa8ccdaca7e) Change-Id: Idf52f2ee4c65b5dc41cb66257d95281dc6f32255
Diffstat (limited to 'compiler')
-rw-r--r--compiler/dex/quick/mir_to_lir.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/dex/quick/mir_to_lir.cc b/compiler/dex/quick/mir_to_lir.cc
index 7ca03cf..c50246d 100644
--- a/compiler/dex/quick/mir_to_lir.cc
+++ b/compiler/dex/quick/mir_to_lir.cc
@@ -193,7 +193,8 @@ void Mir2Lir::LoadArgDirect(size_t in_position, RegLocation rl_dest) {
}
if (!reg_arg.Valid()) {
- LoadBaseDisp(TargetPtrReg(kSp), offset, rl_dest.reg, rl_dest.wide ? k64 : k32, kNotVolatile);
+ OpSize op_size = rl_dest.wide ? k64 : (rl_dest.ref ? kReference : k32);
+ LoadBaseDisp(TargetPtrReg(kSp), offset, rl_dest.reg, op_size, kNotVolatile);
} else {
if (rl_dest.wide) {
OpRegCopyWide(rl_dest.reg, reg_arg);