Merge "Prefer WeakReference.refersTo() to get()" am: 63e3c2c709 am: aca7bb4b9f

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1956816

Change-Id: I626a291208a3063b93cdd0ef1de131162cc916cb
This commit is contained in:
Hans Boehm
2022-01-27 00:50:30 +00:00
committed by Automerger Merge Worker
7 changed files with 10 additions and 11 deletions

View File

@@ -119,7 +119,7 @@ class ActivityTransitionState {
for (int i = mExitTransitionCoordinators.size() - 1; i >= 0; i--) { for (int i = mExitTransitionCoordinators.size() - 1; i >= 0; i--) {
WeakReference<ExitTransitionCoordinator> oldRef WeakReference<ExitTransitionCoordinator> oldRef
= mExitTransitionCoordinators.valueAt(i); = mExitTransitionCoordinators.valueAt(i);
if (oldRef.get() == null) { if (oldRef.refersTo(null)) {
mExitTransitionCoordinators.removeAt(i); mExitTransitionCoordinators.removeAt(i);
} }
} }

View File

@@ -678,8 +678,7 @@ public class ResourcesManager {
int refCount = mResourceImpls.size(); int refCount = mResourceImpls.size();
for (int i = 0; i < refCount; i++) { for (int i = 0; i < refCount; i++) {
WeakReference<ResourcesImpl> weakImplRef = mResourceImpls.valueAt(i); WeakReference<ResourcesImpl> weakImplRef = mResourceImpls.valueAt(i);
ResourcesImpl impl = weakImplRef != null ? weakImplRef.get() : null; if (weakImplRef != null && weakImplRef.refersTo(resourceImpl)) {
if (resourceImpl == impl) {
return mResourceImpls.keyAt(i); return mResourceImpls.keyAt(i);
} }
} }
@@ -1671,7 +1670,7 @@ public class ResourcesManager {
for (int i = mResourceImpls.size() - 1; i >= 0; i--) { for (int i = mResourceImpls.size() - 1; i >= 0; i--) {
final ResourcesKey key = mResourceImpls.keyAt(i); final ResourcesKey key = mResourceImpls.keyAt(i);
final WeakReference<ResourcesImpl> impl = mResourceImpls.valueAt(i); final WeakReference<ResourcesImpl> impl = mResourceImpls.valueAt(i);
if (impl == null || impl.get() == null if (impl == null || impl.refersTo(null)
|| !ArrayUtils.contains(key.mLoaders, loader)) { || !ArrayUtils.contains(key.mLoaders, loader)) {
continue; continue;
} }

View File

@@ -198,7 +198,7 @@ public class ColorStateList extends ComplexColor implements Parcelable {
// Prune the cache before adding new items. // Prune the cache before adding new items.
final int N = sCache.size(); final int N = sCache.size();
for (int i = N - 1; i >= 0; i--) { for (int i = N - 1; i >= 0; i--) {
if (sCache.valueAt(i).get() == null) { if (sCache.valueAt(i).refersTo(null)) {
sCache.removeAt(i); sCache.removeAt(i);
} }
} }

View File

@@ -2011,7 +2011,7 @@ public class Resources {
// Clean up references to garbage collected themes // Clean up references to garbage collected themes
if (mThemeRefs.size() > mThemeRefsNextFlushSize) { if (mThemeRefs.size() > mThemeRefsNextFlushSize) {
mThemeRefs.removeIf(ref -> ref.get() == null); mThemeRefs.removeIf(ref -> ref.refersTo(null));
mThemeRefsNextFlushSize = Math.max(MIN_THEME_REFS_FLUSH_SIZE, mThemeRefsNextFlushSize = Math.max(MIN_THEME_REFS_FLUSH_SIZE,
2 * mThemeRefs.size()); 2 * mThemeRefs.size());
} }

View File

@@ -257,7 +257,7 @@ public class ResourcesLoader {
for (int i = mChangeCallbacks.size() - 1; i >= 0; i--) { for (int i = mChangeCallbacks.size() - 1; i >= 0; i--) {
final WeakReference<Object> key = mChangeCallbacks.keyAt(i); final WeakReference<Object> key = mChangeCallbacks.keyAt(i);
if (key.get() == null) { if (key.refersTo(null)) {
mChangeCallbacks.removeAt(i); mChangeCallbacks.removeAt(i);
} else { } else {
uniqueCallbacks.add(mChangeCallbacks.valueAt(i)); uniqueCallbacks.add(mChangeCallbacks.valueAt(i));

View File

@@ -116,7 +116,7 @@ public final class BinderProxy implements IBinder {
for (ArrayList<WeakReference<BinderProxy>> a : mMainIndexValues) { for (ArrayList<WeakReference<BinderProxy>> a : mMainIndexValues) {
if (a != null) { if (a != null) {
for (WeakReference<BinderProxy> ref : a) { for (WeakReference<BinderProxy> ref : a) {
if (ref.get() != null) { if (!ref.refersTo(null)) {
++size; ++size;
} }
} }
@@ -187,7 +187,7 @@ public final class BinderProxy implements IBinder {
// This ensures that ArrayList size is bounded by the maximum occupancy of // This ensures that ArrayList size is bounded by the maximum occupancy of
// that bucket. // that bucket.
for (int i = 0; i < size; ++i) { for (int i = 0; i < size; ++i) {
if (valueArray.get(i).get() == null) { if (valueArray.get(i).refersTo(null)) {
valueArray.set(i, newWr); valueArray.set(i, newWr);
Long[] keyArray = mMainIndexKeys[myHash]; Long[] keyArray = mMainIndexKeys[myHash];
keyArray[i] = key; keyArray[i] = key;
@@ -195,7 +195,7 @@ public final class BinderProxy implements IBinder {
// "Randomly" check one of the remaining entries in [i+1, size), so that // "Randomly" check one of the remaining entries in [i+1, size), so that
// needlessly long buckets are eventually pruned. // needlessly long buckets are eventually pruned.
int rnd = Math.floorMod(++mRandom, size - (i + 1)); int rnd = Math.floorMod(++mRandom, size - (i + 1));
if (valueArray.get(i + 1 + rnd).get() == null) { if (valueArray.get(i + 1 + rnd).refersTo(null)) {
remove(myHash, i + 1 + rnd); remove(myHash, i + 1 + rnd);
} }
} }

View File

@@ -306,7 +306,7 @@ public class TextKeyListener extends BaseKeyListener implements SpanWatcher {
/* package */ int getPrefs(Context context) { /* package */ int getPrefs(Context context) {
synchronized (this) { synchronized (this) {
if (!mPrefsInited || mResolver.get() == null) { if (!mPrefsInited || mResolver.refersTo(null)) {
initPrefs(context); initPrefs(context);
} }
} }