auto import from //branches/cupcake/...@130745
This commit is contained in:
@@ -14,54 +14,69 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Writes /java/android/preloaded-classes. Also updates LoadedClass.preloaded
|
||||
* Writes /frameworks/base/preloaded-classes. Also updates LoadedClass.preloaded
|
||||
* fields and writes over compiled log file.
|
||||
*/
|
||||
public class WritePreloadedClassFile {
|
||||
|
||||
private static final String PRELOADED_CLASS_FILE
|
||||
= "java/android/preloaded-classes";
|
||||
|
||||
public static void main(String[] args)
|
||||
throws IOException, ClassNotFoundException {
|
||||
if (args.length != 1) {
|
||||
System.err.println(
|
||||
"Usage: WritePreloadedClassFile [compiled log file]");
|
||||
public static void main(String[] args) throws IOException, ClassNotFoundException {
|
||||
|
||||
// Process command-line arguments first
|
||||
List<String> wiredProcesses = new ArrayList<String>();
|
||||
String inputFileName = null;
|
||||
int argOffset = 0;
|
||||
try {
|
||||
while ("--preload-all-process".equals(args[argOffset])) {
|
||||
argOffset++;
|
||||
wiredProcesses.add(args[argOffset++]);
|
||||
}
|
||||
|
||||
inputFileName = args[argOffset++];
|
||||
} catch (RuntimeException e) {
|
||||
System.err.println("Usage: WritePreloadedClassFile " +
|
||||
"[--preload-all-process process-name] " +
|
||||
"[compiled log file]");
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
Root root = Root.fromFile(args[0]);
|
||||
Root root = Root.fromFile(inputFileName);
|
||||
|
||||
for (LoadedClass loadedClass : root.loadedClasses.values()) {
|
||||
loadedClass.preloaded = false;
|
||||
}
|
||||
|
||||
Writer out = new BufferedWriter(new OutputStreamWriter(
|
||||
new FileOutputStream(PRELOADED_CLASS_FILE),
|
||||
new FileOutputStream(Policy.getPreloadedClassFileName()),
|
||||
Charset.forName("US-ASCII")));
|
||||
|
||||
out.write("# Classes which are preloaded by " +
|
||||
"com.android.internal.os.ZygoteInit.\n");
|
||||
out.write("# Automatically generated by /tools/preload.\n");
|
||||
out.write("# Classes which are preloaded by com.android.internal.os.ZygoteInit.\n");
|
||||
out.write("# Automatically generated by /frameworks/base/tools/preload.\n");
|
||||
out.write("# percent=" + Proc.PERCENTAGE_TO_PRELOAD + ", weight="
|
||||
+ ClassRank.SEQUENCE_WEIGHT
|
||||
+ ", bucket_size=" + ClassRank.BUCKET_SIZE
|
||||
+ "\n");
|
||||
for (String wiredProcess : wiredProcesses) {
|
||||
out.write("# forcing classes loaded by: " + wiredProcess + "\n");
|
||||
}
|
||||
|
||||
Set<LoadedClass> highestRanked = new TreeSet<LoadedClass>();
|
||||
for (Proc proc : root.processes.values()) {
|
||||
List<LoadedClass> highestForProc = proc.highestRankedClasses();
|
||||
// test to see if this is one of the wired-down ("take all classes") processes
|
||||
boolean isWired = wiredProcesses.contains(proc.name);
|
||||
|
||||
List<LoadedClass> highestForProc = proc.highestRankedClasses(isWired);
|
||||
|
||||
System.out.println(proc.name + ": " + highestForProc.size());
|
||||
|
||||
@@ -82,6 +97,6 @@ public class WritePreloadedClassFile {
|
||||
+ " classes will be preloaded.");
|
||||
|
||||
// Update data to reflect LoadedClass.preloaded changes.
|
||||
root.toFile(args[0]);
|
||||
root.toFile(inputFileName);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user