diff options
-rw-r--r-- | compiler/dex/quick/mir_to_lir.cc | 3 | ||||
-rw-r--r-- | test/800-smali/expected.txt | 1 | ||||
-rw-r--r-- | test/800-smali/smali/b_22244733.smali | 7 | ||||
-rw-r--r-- | test/800-smali/src/Main.java | 2 |
4 files changed, 12 insertions, 1 deletions
diff --git a/compiler/dex/quick/mir_to_lir.cc b/compiler/dex/quick/mir_to_lir.cc index 7ca03cf0ee..c50246d182 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); diff --git a/test/800-smali/expected.txt b/test/800-smali/expected.txt index 2196a88ed2..c32bfc298e 100644 --- a/test/800-smali/expected.txt +++ b/test/800-smali/expected.txt @@ -23,4 +23,5 @@ b/21863767 b/21886894 b/22080519 b/21645819 +b/22244733 Done! diff --git a/test/800-smali/smali/b_22244733.smali b/test/800-smali/smali/b_22244733.smali new file mode 100644 index 0000000000..1b62ad9245 --- /dev/null +++ b/test/800-smali/smali/b_22244733.smali @@ -0,0 +1,7 @@ +.class public LB22244733; +.super Ljava/lang/Object; + +.method public static run(Ljava/lang/String;)Ljava/lang/String; +.registers 2 # One local and one parameter. + return-object p0 # Simple return, use the special-method path in Quick. +.end method diff --git a/test/800-smali/src/Main.java b/test/800-smali/src/Main.java index e6f065e557..a7f30d0f0b 100644 --- a/test/800-smali/src/Main.java +++ b/test/800-smali/src/Main.java @@ -93,6 +93,8 @@ public class Main { new NullPointerException(), null)); testCases.add(new TestCase("b/21645819", "B21645819", "run", new Object[] { null }, null, null)); + testCases.add(new TestCase("b/22244733", "B22244733", "run", new Object[] { "abc" }, + null, "abc")); } public void runTests() { |