summaryrefslogtreecommitdiff
path: root/test/723-string-init-range
diff options
context:
space:
mode:
author Nicolas Geoffray <ngeoffray@google.com> 2020-11-23 22:53:01 +0000
committer Nicolas Geoffray <ngeoffray@google.com> 2020-11-24 13:10:38 +0000
commit9705c5dc5a1c8f6df6887bc97232e2dcac1fc499 (patch)
tree30383323b7599a03eeca74710b6a5239e06c432b /test/723-string-init-range
parent2324775a451c395ecf2e61867c030724dbcf67c3 (diff)
Add another invoke-range test for String.<init>.
Add a variant with multiple arguments to stress backends / nterp. Test: 723-string-init-range Change-Id: If8b760fc1fded9b3f2a8fc6e928532d7bf3c6225
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.java7
2 files changed, 18 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 45d6329e9c..f47c8bb965 100644
--- a/test/723-string-init-range/smali/new-instance.smali
+++ b/test/723-string-init-range/smali/new-instance.smali
@@ -23,3 +23,14 @@
invoke-direct/range {v0 .. v1}, Ljava/lang/String;-><init>(Ljava/lang/String;)V
return-object v0
.end method
+
+.method public static initRange([BIII)Ljava/lang/String;
+ .registers 9
+ new-instance v0, Ljava/lang/String;
+ move-object v1, p0
+ move v2, p1
+ move v3, p2
+ move v4, p3
+ invoke-direct/range {v0 .. v4}, Ljava/lang/String;-><init>([BIII)V
+ return-object v0
+.end method
diff --git a/test/723-string-init-range/src/Main.java b/test/723-string-init-range/src/Main.java
index 97ba76daa6..12fb93b772 100644
--- a/test/723-string-init-range/src/Main.java
+++ b/test/723-string-init-range/src/Main.java
@@ -26,5 +26,12 @@ public class Main {
if (!expected.equals(result)) {
throw new Error("Expected '" + expected + "', got " + result);
}
+
+ m = c.getMethod("initRange", byte[].class, int.class, int.class, int.class);
+ byte[] byteArray = expected.getBytes();
+ result = (String)m.invoke(null, byteArray, 0, 0, 5);
+ if (!expected.equals(result)) {
+ throw new Error("Expected '" + expected + "', got " + result);
+ }
}
}