summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2011-02-23 18:32:10 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-02-23 18:32:10 -0800
commit8ee31a0a93c583cac347dcc69c8dc71c0507774d (patch)
treeb6075973fcaeabaa8cf49980ee8033a14a8ef6b3
parente4ce73763de01a6d3e0281ad90f6eca08d455f10 (diff)
parentb2c7dd5986344369f02dfe2965b309153b121127 (diff)
downloadframeworks_base-8ee31a0a93c583cac347dcc69c8dc71c0507774d.zip
frameworks_base-8ee31a0a93c583cac347dcc69c8dc71c0507774d.tar.gz
frameworks_base-8ee31a0a93c583cac347dcc69c8dc71c0507774d.tar.bz2
Merge "LayoutLib: downsize the SparseArray when possible."
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/SparseWeakArray.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/SparseWeakArray.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/SparseWeakArray.java
index 22f1609..4d0c9ce 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/SparseWeakArray.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/util/SparseWeakArray.java
@@ -119,8 +119,6 @@ public class SparseWeakArray<E> {
}
private void gc() {
- // Log.e("SparseArray", "gc start with " + mSize);
-
int n = mSize;
int o = 0;
int[] keys = mKeys;
@@ -144,7 +142,17 @@ public class SparseWeakArray<E> {
mGarbage = false;
mSize = o;
- // Log.e("SparseArray", "gc end with " + mSize);
+ int newSize = ArrayUtils.idealIntArraySize(mSize);
+ if (newSize < mKeys.length) {
+ int[] nkeys = new int[newSize];
+ WeakReference<?>[] nvalues = new WeakReference[newSize];
+
+ System.arraycopy(mKeys, 0, nkeys, 0, newSize);
+ System.arraycopy(mValues, 0, nvalues, 0, newSize);
+
+ mKeys = nkeys;
+ mValues = nvalues;
+ }
}
/**