ART: Fix opsize in LoadArgDirect

If the destination register is a reference, use kReference for the
op size.

Bug: 22244733
Change-Id: Idf52f2ee4c65b5dc41cb66257d95281dc6f32255
diff --git a/test/800-smali/expected.txt b/test/800-smali/expected.txt
index 7059b6b..fe68c5b 100644
--- a/test/800-smali/expected.txt
+++ b/test/800-smali/expected.txt
@@ -27,4 +27,5 @@
 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 0000000..1b62ad9
--- /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 30c1b14..61f0d7b 100644
--- a/test/800-smali/src/Main.java
+++ b/test/800-smali/src/Main.java
@@ -101,6 +101,8 @@
                 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() {