summaryrefslogtreecommitdiff
path: root/test/723-string-init-range
diff options
context:
space:
mode:
author Nicolas Geoffray <ngeoffray@google.com> 2020-11-17 13:07:31 +0000
committer Nicolas Geoffray <ngeoffray@google.com> 2020-11-24 13:16:02 +0000
commit6af553d1f411926acdb96d6fa85fb126b761eada (patch)
tree1d1e8c39f732d7a44d29ac2d7bc9eb74846b8378 /test/723-string-init-range
parent9705c5dc5a1c8f6df6887bc97232e2dcac1fc499 (diff)
Fix another typo in nterp.
Test: test.py Change-Id: Ib58880b1e462e9c47a7b55663f39fd29894d2c7c
Diffstat (limited to 'test/723-string-init-range')
-rw-r--r--test/723-string-init-range/smali/new-instance.smali11
-rw-r--r--test/723-string-init-range/src/Main.java6
2 files changed, 17 insertions, 0 deletions
diff --git a/test/723-string-init-range/smali/new-instance.smali b/test/723-string-init-range/smali/new-instance.smali
index f47c8bb965..29fa696b74 100644
--- a/test/723-string-init-range/smali/new-instance.smali
+++ b/test/723-string-init-range/smali/new-instance.smali
@@ -34,3 +34,14 @@
invoke-direct/range {v0 .. v4}, Ljava/lang/String;-><init>([BIII)V
return-object v0
.end method
+
+.method public static initRangeWithAlias(Ljava/lang/String;)Ljava/lang/String;
+ .registers 19
+ # Put the object in a register > 0xF, as the arm64 nterp implementation wrongly masked
+ # that register with 0xF when handling String.<init> in an invoke-range.
+ new-instance v16, Ljava/lang/String;
+ move-object/from16 v1, v16
+ move-object/16 v17, p0
+ invoke-direct/range {v16 .. v17}, Ljava/lang/String;-><init>(Ljava/lang/String;)V
+ return-object v1
+.end method
diff --git a/test/723-string-init-range/src/Main.java b/test/723-string-init-range/src/Main.java
index 12fb93b772..ca2fb7acbe 100644
--- a/test/723-string-init-range/src/Main.java
+++ b/test/723-string-init-range/src/Main.java
@@ -33,5 +33,11 @@ public class Main {
if (!expected.equals(result)) {
throw new Error("Expected '" + expected + "', got " + result);
}
+
+ m = c.getMethod("initRangeWithAlias", String.class);
+ result = (String)m.invoke(null, expected);
+ if (!expected.equals(result)) {
+ throw new Error("Expected '" + expected + "', got " + result);
+ }
}
}