diff options
author | Brian Carlstrom <bdc@google.com> | 2012-08-01 14:03:23 -0700 |
---|---|---|
committer | android code review <noreply-gerritcodereview@google.com> | 2012-08-01 14:03:24 -0700 |
commit | 8438df1f4e63f44b416da21b354ed42c582bd973 (patch) | |
tree | 9edbb679d5421acdabf2c7ad2a97d25c4b920121 | |
parent | 47404489ac33f10223be78932dbe5b9dcd8a5aee (diff) | |
parent | 2680db46e43b69cc1c49429d371cd1c7512d6f2c (diff) | |
download | libcore-8438df1f4e63f44b416da21b354ed42c582bd973.zip libcore-8438df1f4e63f44b416da21b354ed42c582bd973.tar.gz libcore-8438df1f4e63f44b416da21b354ed42c582bd973.tar.bz2 |
Merge "Clean up lint in java.lang.ref."
-rw-r--r-- | luni/src/main/java/java/lang/ref/FinalizerReference.java | 23 | ||||
-rw-r--r-- | luni/src/main/java/java/lang/ref/Reference.java | 5 | ||||
-rw-r--r-- | luni/src/main/java/java/lang/ref/ReferenceQueue.java | 4 |
3 files changed, 15 insertions, 17 deletions
diff --git a/luni/src/main/java/java/lang/ref/FinalizerReference.java b/luni/src/main/java/java/lang/ref/FinalizerReference.java index 7a6d871..14eaae4 100644 --- a/luni/src/main/java/java/lang/ref/FinalizerReference.java +++ b/luni/src/main/java/java/lang/ref/FinalizerReference.java @@ -28,11 +28,11 @@ public final class FinalizerReference<T> extends Reference<T> { // This list contains a FinalizerReference for every finalizable object in the heap. // Objects in this list may or may not be eligible for finalization yet. - private static FinalizerReference head = null; + private static FinalizerReference<?> head = null; // The links used to construct the list. - private FinalizerReference prev; - private FinalizerReference next; + private FinalizerReference<?> prev; + private FinalizerReference<?> next; // When the GC wants something finalized, it moves it from the 'referent' field to // the 'zombie' field instead. @@ -50,7 +50,7 @@ public final class FinalizerReference<T> extends Reference<T> { zombie = null; } - static void add(Object referent) { + public static void add(Object referent) { FinalizerReference<?> reference = new FinalizerReference<Object>(referent, queue); synchronized (LIST_LOCK) { reference.prev = null; @@ -62,10 +62,10 @@ public final class FinalizerReference<T> extends Reference<T> { } } - public static void remove(FinalizerReference reference) { + public static void remove(FinalizerReference<?> reference) { synchronized (LIST_LOCK) { - FinalizerReference next = reference.next; - FinalizerReference prev = reference.prev; + FinalizerReference<?> next = reference.next; + FinalizerReference<?> prev = reference.prev; reference.next = null; reference.prev = null; if (prev != null) { @@ -93,11 +93,12 @@ public final class FinalizerReference<T> extends Reference<T> { // When a finalizable object is allocated, a FinalizerReference is added to the list. // We search the list for that FinalizerReference (it should be at or near the head), // and then put it on the queue so that it can be finalized. - for (FinalizerReference r = head; r != null; r = r.next) { + for (FinalizerReference<?> r = head; r != null; r = r.next) { if (r.referent == sentinel) { - r.referent = null; - r.zombie = sentinel; - r.enqueueInternal(); + FinalizerReference<Sentinel> sentinelReference = (FinalizerReference<Sentinel>) r; + sentinelReference.referent = null; + sentinelReference.zombie = sentinel; + sentinelReference.enqueueInternal(); return; } } diff --git a/luni/src/main/java/java/lang/ref/Reference.java b/luni/src/main/java/java/lang/ref/Reference.java index 85fbb04..9cf49a7 100644 --- a/luni/src/main/java/java/lang/ref/Reference.java +++ b/luni/src/main/java/java/lang/ref/Reference.java @@ -55,8 +55,7 @@ public abstract class Reference<T> { * VM requirement: this field <em>must</em> be called "queue" * and be a java.lang.ref.ReferenceQueue. */ - @SuppressWarnings("unchecked") - volatile ReferenceQueue queue; + volatile ReferenceQueue<? super T> queue; /** * Used internally by java.lang.ref.ReferenceQueue. @@ -82,7 +81,7 @@ public abstract class Reference<T> { Reference() { } - Reference(T r, ReferenceQueue q) { + Reference(T r, ReferenceQueue<? super T> q) { referent = r; queue = q; } diff --git a/luni/src/main/java/java/lang/ref/ReferenceQueue.java b/luni/src/main/java/java/lang/ref/ReferenceQueue.java index 6c9b4d5..2b8089c 100644 --- a/luni/src/main/java/java/lang/ref/ReferenceQueue.java +++ b/luni/src/main/java/java/lang/ref/ReferenceQueue.java @@ -131,8 +131,6 @@ public class ReferenceQueue<T> { * * @param reference * reference object to be enqueued. - * @return boolean true if reference is enqueued. false if reference failed - * to enqueue. */ synchronized void enqueue(Reference<? extends T> reference) { if (head == null) { @@ -145,7 +143,7 @@ public class ReferenceQueue<T> { } /** @hide */ - public static Reference unenqueued = null; + public static Reference<?> unenqueued = null; static void add(Reference<?> list) { synchronized (ReferenceQueue.class) { |