Add @NeverInline annotation to more String* methods
Since we are allowing to inline unimplemented intrinsics, we want to mark some methods as @NeverInline to keep our pattern matching working.
Bug: 262585898
Change-Id: I354ee8634b1a58b6f5bb968aa58d2ca84419de03
diff --git a/ojluni/src/main/java/java/lang/String.java b/ojluni/src/main/java/java/lang/String.java
index b165137..5c97e48 100644
--- a/ojluni/src/main/java/java/lang/String.java
+++ b/ojluni/src/main/java/java/lang/String.java
@@ -27,6 +27,7 @@
package java.lang;
import dalvik.annotation.optimization.FastNative;
+import dalvik.annotation.optimization.NeverInline;
import java.io.ObjectStreamField;
import java.io.UnsupportedEncodingException;
import java.lang.annotation.Native;
@@ -2108,6 +2109,7 @@
* @return the index of the first occurrence of the specified substring,
* or {@code -1} if there is no such occurrence.
*/
+ @NeverInline
public int indexOf(String str) {
// BEGIN Android-changed: Implement with indexOf() method that takes String parameters.
/*
@@ -2141,6 +2143,7 @@
* starting at the specified index,
* or {@code -1} if there is no such occurrence.
*/
+ @NeverInline
public int indexOf(String str, int fromIndex) {
// BEGIN Android-changed: Implement with indexOf() method that takes String parameters.
/*
diff --git a/ojluni/src/main/java/java/lang/StringBuffer.java b/ojluni/src/main/java/java/lang/StringBuffer.java
index e597a81..6563b3f 100644
--- a/ojluni/src/main/java/java/lang/StringBuffer.java
+++ b/ojluni/src/main/java/java/lang/StringBuffer.java
@@ -25,6 +25,7 @@
package java.lang;
+import dalvik.annotation.optimization.NeverInline;
import java.util.Arrays;
import jdk.internal.HotSpotIntrinsicCandidate;
@@ -709,6 +710,7 @@
@Override
@HotSpotIntrinsicCandidate
+ @NeverInline
public synchronized String toString() {
if (toStringCache == null) {
return toStringCache =
diff --git a/ojluni/src/main/java/java/lang/StringBuilder.java b/ojluni/src/main/java/java/lang/StringBuilder.java
index 28c765c..a0a9d68 100644
--- a/ojluni/src/main/java/java/lang/StringBuilder.java
+++ b/ojluni/src/main/java/java/lang/StringBuilder.java
@@ -174,12 +174,14 @@
}
@Override
+ @NeverInline
public StringBuilder append(Object obj) {
return append(String.valueOf(obj));
}
@Override
@HotSpotIntrinsicCandidate
+ @NeverInline
public StringBuilder append(String str) {
super.append(str);
return this;
@@ -204,12 +206,14 @@
* @param sb the {@code StringBuffer} to append.
* @return a reference to this object.
*/
+ @NeverInline
public StringBuilder append(StringBuffer sb) {
super.append(sb);
return this;
}
@Override
+ @NeverInline
public StringBuilder append(CharSequence s) {
super.append(s);
return this;
@@ -219,12 +223,14 @@
* @throws IndexOutOfBoundsException {@inheritDoc}
*/
@Override
+ @NeverInline
public StringBuilder append(CharSequence s, int start, int end) {
super.append(s, start, end);
return this;
}
@Override
+ @NeverInline
public StringBuilder append(char[] str) {
super.append(str);
return this;
@@ -234,12 +240,14 @@
* @throws IndexOutOfBoundsException {@inheritDoc}
*/
@Override
+ @NeverInline
public StringBuilder append(char[] str, int offset, int len) {
super.append(str, offset, len);
return this;
}
@Override
+ @NeverInline
public StringBuilder append(boolean b) {
super.append(b);
return this;
@@ -247,6 +255,7 @@
@Override
@HotSpotIntrinsicCandidate
+ @NeverInline
public StringBuilder append(char c) {
super.append(c);
return this;
@@ -254,24 +263,28 @@
@Override
@HotSpotIntrinsicCandidate
+ @NeverInline
public StringBuilder append(int i) {
super.append(i);
return this;
}
@Override
+ @NeverInline
public StringBuilder append(long lng) {
super.append(lng);
return this;
}
@Override
+ @NeverInline
public StringBuilder append(float f) {
super.append(f);
return this;
}
@Override
+ @NeverInline
public StringBuilder append(double d) {
super.append(d);
return this;
@@ -281,6 +294,7 @@
* @since 1.5
*/
@Override
+ @NeverInline
public StringBuilder appendCodePoint(int codePoint) {
super.appendCodePoint(codePoint);
return this;
@@ -453,6 +467,7 @@
@Override
@HotSpotIntrinsicCandidate
+ @NeverInline
public String toString() {
// BEGIN Android-added: Return a constant "" for an empty buffer to keep historic behavior.
if (count == 0) {