summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2011-02-23 15:02:58 -0800
committerXavier Ducrohet <xav@android.com>2011-02-23 15:02:58 -0800
commitb2c7dd5986344369f02dfe2965b309153b121127 (patch)
tree9a54b0903d2ae5f16f16dcade25c885860bd5ab8 /tools
parentc6083f2c9eadb1f8a502ea9806868f5b0148667e (diff)
downloadframeworks_base-b2c7dd5986344369f02dfe2965b309153b121127.zip
frameworks_base-b2c7dd5986344369f02dfe2965b309153b121127.tar.gz
frameworks_base-b2c7dd5986344369f02dfe2965b309153b121127.tar.bz2
LayoutLib: downsize the SparseArray when possible.
Change-Id: I570b93ab161414b7729f8d2dce8ddadb706f186b
Diffstat (limited to 'tools')
-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;
+ }
}
/**