From 8bb1212566e6554d8016df014d4f67b821dc308e Mon Sep 17 00:00:00 2001 From: Tom Ball Date: Fri, 1 Nov 2013 15:55:07 -0700 Subject: [PATCH] Fixed new reference cycles in java.util.concurrent, reduced CycleFinder default output. Change on 2013/10/30 by tball ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=55870159 --- .../com/google/devtools/cyclefinder/CycleFinder.java | 11 ++++++----- .../java/java/util/concurrent/ArrayBlockingQueue.java | 4 ++++ .../java/java/util/concurrent/ConcurrentHashMap.java | 6 ++++++ .../java/util/concurrent/ConcurrentSkipListMap.java | 11 +++++++++++ .../java/util/concurrent/ConcurrentSkipListSet.java | 4 ++++ 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/cycle_finder/src/main/java/com/google/devtools/cyclefinder/CycleFinder.java b/cycle_finder/src/main/java/com/google/devtools/cyclefinder/CycleFinder.java index 66b6d2c475..7e3330ffd3 100644 --- a/cycle_finder/src/main/java/com/google/devtools/cyclefinder/CycleFinder.java +++ b/cycle_finder/src/main/java/com/google/devtools/cyclefinder/CycleFinder.java @@ -30,6 +30,7 @@ import java.io.PrintStream; import java.util.Collection; import java.util.List; +import java.util.logging.Logger; /** * A tool for finding possible reference cycles in a Java program. @@ -39,7 +40,6 @@ public class CycleFinder { private final Options options; - private final PrintStream outStream; private final PrintStream errStream; private int nErrors = 0; private List errors = Lists.newArrayList(); @@ -52,9 +52,10 @@ public class CycleFinder { } } - public CycleFinder(Options options, PrintStream outStream, PrintStream errStream) { + private static final Logger logger = Logger.getLogger(CycleFinder.class.getName()); + + public CycleFinder(Options options, PrintStream errStream) { this.options = options; - this.outStream = outStream; this.errStream = errStream; } @@ -62,7 +63,7 @@ private FileASTRequestor newASTRequestor(final TypeCollector typeCollector) { return new FileASTRequestor() { @Override public void acceptAST(String sourceFilePath, CompilationUnit ast) { - outStream.println("acceptAST: " + sourceFilePath); + logger.fine("acceptAST: " + sourceFilePath); for (IProblem problem : ast.getProblems()) { if (problem.isError()) { error(String.format("%s:%s: %s", @@ -175,7 +176,7 @@ public static void main(String[] args) throws IOException { Options.help(true); } Options options = Options.parse(args); - CycleFinder finder = new CycleFinder(options, System.out, System.err); + CycleFinder finder = new CycleFinder(options, System.err); finder.testFileExistence(); finder.exitOnErrors(); List> cycles = finder.findCycles(); diff --git a/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ArrayBlockingQueue.java b/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ArrayBlockingQueue.java index e30ab672a8..17344aac78 100644 --- a/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ArrayBlockingQueue.java +++ b/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ArrayBlockingQueue.java @@ -5,6 +5,9 @@ */ package java.util.concurrent; + +import com.google.j2objc.annotations.Weak; + import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; import java.util.AbstractQueue; @@ -90,6 +93,7 @@ public class ArrayBlockingQueue extends AbstractQueue * are known not to be any. Allows queue operations to update * iterator state. */ + @Weak transient Itrs itrs = null; // Internal helper methods diff --git a/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentHashMap.java b/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentHashMap.java index bcf1f20e1f..87a6fc44c6 100644 --- a/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentHashMap.java +++ b/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentHashMap.java @@ -5,6 +5,9 @@ */ package java.util.concurrent; + +import com.google.j2objc.annotations.WeakOuter; + import java.util.concurrent.locks.*; import java.util.*; import java.io.Serializable; @@ -1314,6 +1317,7 @@ public Map.Entry next() { } } + @WeakOuter final class KeySet extends AbstractSet { public Iterator iterator() { return new KeyIterator(); @@ -1335,6 +1339,7 @@ public void clear() { } } + @WeakOuter final class Values extends AbstractCollection { public Iterator iterator() { return new ValueIterator(); @@ -1353,6 +1358,7 @@ public void clear() { } } + @WeakOuter final class EntrySet extends AbstractSet> { public Iterator> iterator() { return new EntryIterator(); diff --git a/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentSkipListMap.java b/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentSkipListMap.java index d0d6f143aa..eb27afa47d 100644 --- a/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentSkipListMap.java +++ b/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentSkipListMap.java @@ -5,6 +5,9 @@ */ package java.util.concurrent; + +import com.google.j2objc.annotations.Weak; + import java.util.*; // BEGIN android-note @@ -322,12 +325,16 @@ public class ConcurrentSkipListMap extends AbstractMap private transient int randomSeed; /** Lazily initialized key set */ + @Weak private transient KeySet keySet; /** Lazily initialized entry set */ + @Weak private transient EntrySet entrySet; /** Lazily initialized values collection */ + @Weak private transient Values values; /** Lazily initialized descending key set */ + @Weak private transient ConcurrentNavigableMap descendingMap; /** @@ -2276,6 +2283,7 @@ static final List toList(Collection c) { static final class KeySet extends AbstractSet implements NavigableSet { + @Weak private final ConcurrentNavigableMap m; KeySet(ConcurrentNavigableMap map) { m = map; } public int size() { return m.size(); } @@ -2351,6 +2359,7 @@ public NavigableSet descendingSet() { } static final class Values extends AbstractCollection { + @Weak private final ConcurrentNavigableMap m; Values(ConcurrentNavigableMap map) { m = map; @@ -2378,6 +2387,7 @@ public void clear() { } static final class EntrySet extends AbstractSet> { + @Weak private final ConcurrentNavigableMap m; EntrySet(ConcurrentNavigableMap map) { m = map; @@ -2463,6 +2473,7 @@ static final class SubMap extends AbstractMap // Lazily initialized view holders private transient KeySet keySetView; + @Weak private transient Set> entrySetView; private transient Collection valuesView; diff --git a/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentSkipListSet.java b/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentSkipListSet.java index 71431a91ec..2c7e44f6de 100644 --- a/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentSkipListSet.java +++ b/jre_emul/android/libcore/luni/src/main/java/java/util/concurrent/ConcurrentSkipListSet.java @@ -5,6 +5,9 @@ */ package java.util.concurrent; + +import com.google.j2objc.annotations.Weak; + import java.util.*; // BEGIN android-note @@ -63,6 +66,7 @@ public class ConcurrentSkipListSet * element. This field is declared final for the sake of thread * safety, which entails some ugliness in clone() */ + @Weak private final ConcurrentNavigableMap m; /**