summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--benchmarks/src/benchmarks/regression/DecimalFormatBenchmark.java6
-rw-r--r--ojluni/src/main/java/java/text/DecimalFormat.java27
2 files changed, 17 insertions, 16 deletions
diff --git a/benchmarks/src/benchmarks/regression/DecimalFormatBenchmark.java b/benchmarks/src/benchmarks/regression/DecimalFormatBenchmark.java
index 0c4aa77874..2436379094 100644
--- a/benchmarks/src/benchmarks/regression/DecimalFormatBenchmark.java
+++ b/benchmarks/src/benchmarks/regression/DecimalFormatBenchmark.java
@@ -153,4 +153,10 @@ public class DecimalFormatBenchmark {
public void time_formatToCharacterIterator10e1000(int reps) {
formatToCharacterIterator(BD10E1000, reps);
}
+
+ public void time_instantiation(int reps) {
+ for (int i = 0; i < reps; i++) {
+ new DecimalFormat();
+ }
+ }
}
diff --git a/ojluni/src/main/java/java/text/DecimalFormat.java b/ojluni/src/main/java/java/text/DecimalFormat.java
index ff9d90f055..2cb1473407 100644
--- a/ojluni/src/main/java/java/text/DecimalFormat.java
+++ b/ojluni/src/main/java/java/text/DecimalFormat.java
@@ -409,19 +409,21 @@ public class DecimalFormat extends NumberFormat {
public DecimalFormat() {
// Get the pattern for the default locale.
Locale def = Locale.getDefault(Locale.Category.FORMAT);
- // BEGIN Android-changed: Use ICU LocaleData.
- // try to get the pattern from the cache
- String pattern = cachedLocaleData.get(def);
- if (pattern == null) { /* cache miss */
- // Get the pattern for the default locale.
- pattern = LocaleData.get(def).numberPattern;
- /* update cache */
- cachedLocaleData.putIfAbsent(def, pattern);
+ // BEGIN Android-changed: Use ICU LocaleData. Remove SPI LocaleProviderAdapter.
+ /*
+ LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(NumberFormatProvider.class, def);
+ if (!(adapter instanceof ResourceBundleBasedAdapter)) {
+ adapter = LocaleProviderAdapter.getResourceBundleBased();
}
- // END Android-changed: Use ICU LocaleData.
+ String[] all = adapter.getLocaleResources(def).getNumberPatterns();
+ */
+ String pattern = LocaleData.get(def).numberPattern;
+ // END Android-changed: Use ICU LocaleData. Remove SPI LocaleProviderAdapter.
+
// Always applyPattern after the symbols are set
this.symbols = DecimalFormatSymbols.getInstance(def);
// Android-changed: use initPattern() instead of removed applyPattern(String, boolean).
+ // applyPattern(all[0], false);
initPattern(pattern);
}
@@ -1904,11 +1906,4 @@ public class DecimalFormat extends NumberFormat {
// Proclaim JDK 1.1 serial compatibility.
static final long serialVersionUID = 864413376551465018L;
-
- // Android-added: cachedLocaleData for caching default number format pattern per locale.
- /**
- * Cache to hold the NumberPattern of a Locale.
- */
- private static final ConcurrentMap<Locale, String> cachedLocaleData
- = new ConcurrentHashMap<>(3);
}