Merge "Upstream verification spreadsheet: Explicitly specify repositories to compare."
diff --git a/libart/src/main/java/dalvik/system/VMRuntime.java b/libart/src/main/java/dalvik/system/VMRuntime.java
index 25f851a..af6323c 100644
--- a/libart/src/main/java/dalvik/system/VMRuntime.java
+++ b/libart/src/main/java/dalvik/system/VMRuntime.java
@@ -333,6 +333,11 @@
public native boolean isNativeDebuggable();
/**
+ * Returns true if Java debugging is enabled.
+ */
+ public native boolean isJavaDebuggable();
+
+ /**
* Registers a native allocation so that the heap knows about it and performs GC as required.
* If the number of native allocated bytes exceeds the native allocation watermark, the
* function requests a concurrent GC. If the native bytes allocated exceeds a second higher
diff --git a/ojluni/src/main/java/java/lang/AbstractStringBuilder.java b/ojluni/src/main/java/java/lang/AbstractStringBuilder.java
index 1c8bc72..4c31e23 100644
--- a/ojluni/src/main/java/java/lang/AbstractStringBuilder.java
+++ b/ojluni/src/main/java/java/lang/AbstractStringBuilder.java
@@ -1,5 +1,4 @@
/*
- * Copyright (C) 2014 The Android Open Source Project
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -1346,8 +1345,7 @@
* specified substring, starting at the specified index.
*/
public int indexOf(String str, int fromIndex) {
- return String.indexOf(value, 0, count,
- str.toCharArray(), 0, str.length(), fromIndex);
+ return String.indexOf(value, 0, count, str, fromIndex);
}
/**
@@ -1386,8 +1384,7 @@
* specified substring.
*/
public int lastIndexOf(String str, int fromIndex) {
- return String.lastIndexOf(value, 0, count,
- str.toCharArray(), 0, str.length(), fromIndex);
+ return String.lastIndexOf(value, 0, count, str, fromIndex);
}
/**
diff --git a/ojluni/src/main/java/java/lang/String.java b/ojluni/src/main/java/java/lang/String.java
index de54882..b5df9f0 100644
--- a/ojluni/src/main/java/java/lang/String.java
+++ b/ojluni/src/main/java/java/lang/String.java
@@ -1707,24 +1707,20 @@
* or {@code -1} if there is no such occurrence.
*/
public int indexOf(String str, int fromIndex) {
- // Android-changed: Change parameters to static indexOf to match new signature below.
+ // Android-changed: Delegate to the static indexOf method below.
return indexOf(this, str, fromIndex);
}
+ // BEGIN Android-added: Private static indexOf method that takes String parameters.
+ // The use of length(), charAt(), etc. makes it more efficient for compressed strings.
/**
- * Code shared by String and AbstractStringBuilder to do searches. The
- * source is the character array being searched, and the target
- * is the string being searched for.
+ * The source is the string being searched, and the target is the string being searched for.
*
* @param source the characters being searched.
* @param target the characters being searched for.
* @param fromIndex the index to begin searching from.
*/
- // BEGIN Android-changed: Change signature to take String object rather than char arrays.
- // The implementation using a java char array is replaced with one using length() & charAt().
- static int indexOf(String source,
- String target,
- int fromIndex) {
+ private static int indexOf(String source, String target, int fromIndex) {
final int sourceLength = source.length();
final int targetLength = target.length();
if (fromIndex >= sourceLength) {
@@ -1761,7 +1757,25 @@
}
return -1;
}
- // END Android-changed: Change signature to take String object rather than char arrays.
+ // END Android-added: Private static indexOf method that takes String parameters.
+
+ /**
+ * Code shared by String and AbstractStringBuilder to do searches. The
+ * source is the character array being searched, and the target
+ * is the string being searched for.
+ *
+ * @param source the characters being searched.
+ * @param sourceOffset offset of the source string.
+ * @param sourceCount count of the source string.
+ * @param target the characters being searched for.
+ * @param fromIndex the index to begin searching from.
+ */
+ static int indexOf(char[] source, int sourceOffset, int sourceCount,
+ String target, int fromIndex) {
+ return indexOf(source, sourceOffset, sourceCount,
+ target.toCharArray(), 0, target.length(),
+ fromIndex);
+ }
/**
* Code shared by String and StringBuffer to do searches. The
@@ -1854,20 +1868,16 @@
return lastIndexOf(this, str, fromIndex);
}
+ // BEGIN Android-added: Private static lastIndexOf method that takes String parameters.
+ // The use of length(), charAt(), etc. makes it more efficient for compressed strings.
/**
- * Code shared by String and AbstractStringBuilder to do searches. The
- * source is the character array being searched, and the target
- * is the string being searched for.
+ * The source is the string being searched, and the target is the string being searched for.
*
* @param source the characters being searched.
* @param target the characters being searched for.
* @param fromIndex the index to begin searching from.
*/
- // BEGIN Android-changed: Change signature to take String object rather than char arrays.
- // The implementation using a java char array is replaced with one using length() & charAt().
- static int lastIndexOf(String source,
- String target,
- int fromIndex) {
+ private static int lastIndexOf(String source, String target, int fromIndex) {
/*
* Check arguments; return immediately where possible. For
* consistency, don't check for null str.
@@ -1912,7 +1922,25 @@
return start + 1;
}
}
- // END Android-changed: Change signature to take String object rather than char arrays.
+ // END Android-added: Private static lastIndexOf method that takes String parameters.
+
+ /**
+ * Code shared by String and AbstractStringBuilder to do searches. The
+ * source is the character array being searched, and the target
+ * is the string being searched for.
+ *
+ * @param source the characters being searched.
+ * @param sourceOffset offset of the source string.
+ * @param sourceCount count of the source string.
+ * @param target the characters being searched for.
+ * @param fromIndex the index to begin searching from.
+ */
+ static int lastIndexOf(char[] source, int sourceOffset, int sourceCount,
+ String target, int fromIndex) {
+ return lastIndexOf(source, sourceOffset, sourceCount,
+ target.toCharArray(), 0, target.length(),
+ fromIndex);
+ }
/**
* Code shared by String and StringBuffer to do searches. The
@@ -2907,9 +2935,7 @@
* character array.
*/
public static String valueOf(char data[]) {
- // Android-changed: Replace constructor call with call to new StringFactory class.
- // return new String(data);
- return StringFactory.newStringFromChars(data);
+ return new String(data);
}
/**
@@ -2933,9 +2959,7 @@
* {@code data.length}.
*/
public static String valueOf(char data[], int offset, int count) {
- // Android-changed: Replace constructor call with call to new StringFactory class.
- // return new String(data, offset, count);
- return StringFactory.newStringFromChars(data, offset, count);
+ return new String(data, offset, count);
}
/**
@@ -2952,10 +2976,7 @@
* {@code data.length}.
*/
public static String copyValueOf(char data[], int offset, int count) {
- // Android-changed: Replace constructor call with call to new StringFactory class.
- // All public String constructors now copy the data.
- // return new String(data, offset, count);
- return StringFactory.newStringFromChars(data, offset, count);
+ return new String(data, offset, count);
}
/**
@@ -2966,9 +2987,7 @@
* character array.
*/
public static String copyValueOf(char data[]) {
- // Android-changed: Replace constructor call with call to new StringFactory class.
- // return new String(data);
- return StringFactory.newStringFromChars(data);
+ return new String(data);
}
/**
@@ -2992,7 +3011,8 @@
* as its single character the argument {@code c}.
*/
public static String valueOf(char c) {
- // Android-changed: Replace constructor call with call to new StringFactory class.
+ // Android-changed: Replace constructor call with call to StringFactory class.
+ // There is currently no String(char[], boolean) on Android to call. http://b/79902155
// char data[] = {c};
// return new String(data, true);
return StringFactory.newStringFromChars(0, 1, new char[] { c });
diff --git a/ojluni/src/main/java/java/lang/StringBuilder.java b/ojluni/src/main/java/java/lang/StringBuilder.java
index 5f1e4e7..325c9c5 100644
--- a/ojluni/src/main/java/java/lang/StringBuilder.java
+++ b/ojluni/src/main/java/java/lang/StringBuilder.java
@@ -410,9 +410,7 @@
}
// END Android-added: Return a constant "" for an empty buffer to keep historic behavior.
// Create a copy, don't share the array
- // Android-changed: Use StringFactory, not String constructor. http://b/79902155
- // return new String(value, 0, count);
- return StringFactory.newStringFromChars(0, count, value);
+ return new String(value, 0, count);
}
/**