You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(97) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(127) |
Feb
(34) |
Mar
(16) |
Apr
(26) |
May
(55) |
Jun
(107) |
Jul
(36) |
Aug
(72) |
Sep
(90) |
Oct
(41) |
Nov
(27) |
Dec
(13) |
2008 |
Jan
(37) |
Feb
(39) |
Mar
(98) |
Apr
(115) |
May
(134) |
Jun
(120) |
Jul
(86) |
Aug
(149) |
Sep
(68) |
Oct
(66) |
Nov
(104) |
Dec
(49) |
2009 |
Jan
(131) |
Feb
(132) |
Mar
(125) |
Apr
(172) |
May
(161) |
Jun
(43) |
Jul
(47) |
Aug
(38) |
Sep
(18) |
Oct
(6) |
Nov
(1) |
Dec
(15) |
2010 |
Jan
(21) |
Feb
(8) |
Mar
(10) |
Apr
(4) |
May
(9) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
(4) |
2011 |
Jan
(23) |
Feb
(10) |
Mar
(13) |
Apr
(3) |
May
|
Jun
(19) |
Jul
(11) |
Aug
(22) |
Sep
|
Oct
(4) |
Nov
(2) |
Dec
(12) |
2012 |
Jan
(3) |
Feb
(4) |
Mar
(7) |
Apr
(3) |
May
|
Jun
(1) |
Jul
(1) |
Aug
(30) |
Sep
(3) |
Oct
(2) |
Nov
|
Dec
(8) |
2013 |
Jan
(3) |
Feb
(40) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(12) |
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
|
1
|
2
(2) |
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
|
|
|
|
|
|
From: <cr...@us...> - 2010-10-02 13:42:58
|
Revision: 5758 http://jnode.svn.sourceforge.net/jnode/?rev=5758&view=rev Author: crawley Date: 2010-10-02 13:42:51 +0000 (Sat, 02 Oct 2010) Log Message: ----------- Some refactoring of code that uses 'compileHighOptLevelPackages'. Modified Paths: -------------- trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java Modified: trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java =================================================================== --- trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2010-10-02 09:48:09 UTC (rev 5757) +++ trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2010-10-02 13:42:51 UTC (rev 5758) @@ -995,18 +995,16 @@ * @return {@code true} if it should, {@code false} if not. */ protected boolean isCompileHighOptLevel(VmType<?> vmClass) { - if (vmClass.isArray()) { - return true; - } - - final String name = vmClass.getName(); + return vmClass.isArray() || isCompileHighOptLevel(vmClass.getName()); + } + + private boolean isCompileHighOptLevel(String name) { if (compileHighOptLevelPackages.contains(name)) { return true; } final int lastDotIdx = name.lastIndexOf('.'); - final String pkg = (lastDotIdx > 0) ? name.substring(0, lastDotIdx) - : ""; + final String pkg = (lastDotIdx > 0) ? name.substring(0, lastDotIdx) : ""; if (compileHighOptLevelPackages.contains(pkg)) { return true; @@ -1022,6 +1020,8 @@ return false; } + + /** * Link all undefined symbols from the kernel native code. @@ -1110,39 +1110,14 @@ if (eName.endsWith(".class")) { final String cName = eName.substring(0, eName.length() - ".class".length()).replace('/', '.'); - boolean load = false; - - if (compileHighOptLevelPackages.contains(cName)) { - load = true; - } else if (preloadPackages.contains(cName)) { - load = true; - } - final int lastDotIdx = cName.lastIndexOf('.'); - final String pkg = (lastDotIdx > 0) ? cName.substring(0, - lastDotIdx) : ""; - - if (compileHighOptLevelPackages.contains(pkg)) { - load = true; - } else if (preloadPackages.contains(pkg)) { - load = true; - } else { - for (String s : compileHighOptLevelPackages) { - if (s.endsWith("*")) { - if (cName.startsWith(s.substring(0, s.length() - 1))) { - load = true; - break; - } - } - } - } - - if (load) { + final String pkg = (lastDotIdx > 0) ? cName.substring(0, lastDotIdx) : ""; + if (isCompileHighOptLevel(cName) || + preloadPackages.contains(cName) || preloadPackages.contains(pkg)) { loadClass(cName, true); } } } - } protected abstract void logStatistics(NativeStream os); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cr...@us...> - 2010-10-02 09:48:16
|
Revision: 5757 http://jnode.svn.sourceforge.net/jnode/?rev=5757&view=rev Author: crawley Date: 2010-10-02 09:48:09 +0000 (Sat, 02 Oct 2010) Log Message: ----------- Move the lists of classes/packages that need to be optimized by the boot image builder to config files. Modified Paths: -------------- trunk/all/build-x86.xml trunk/all/build.xml trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java Added Paths: ----------- trunk/all/conf/core-classes.txt trunk/all/conf/x86-classes.txt Modified: trunk/all/build-x86.xml =================================================================== --- trunk/all/build-x86.xml 2010-07-11 14:27:38 UTC (rev 5756) +++ trunk/all/build-x86.xml 2010-10-02 09:48:09 UTC (rev 5757) @@ -182,8 +182,10 @@ listfile="${build.bootimage.dir}/bootimage.lst" debugfile="${build.bootimage.dir}/bootimage.debug" kernelfile="${build.native.dir}/output/jnode.o" - pluginList="${system-plugin-list}" + pluginList="${system-plugin-list}" pluginDir="${plugins.dir}" + coreClassListFile="${jnode-core-class-list}" + archClassListFile="${jnode-x86-class-list}" targetArch="x86" memMgrPluginId="${jnode.memmgr.plugin.id}" cpu="${cpu}" Modified: trunk/all/build.xml =================================================================== --- trunk/all/build.xml 2010-07-11 14:27:38 UTC (rev 5756) +++ trunk/all/build.xml 2010-10-02 09:48:09 UTC (rev 5757) @@ -102,6 +102,11 @@ <property name="jnode-x86.iso" value="${cdroms.dir}/jnode-x86.iso"/> <property name="jnode-x86-lite.iso" value="${cdroms.dir}/jnode-x86-lite.iso"/> <property name="jnode-x86_64-lite.iso" value="${cdroms.dir}/jnode-x86_64-lite.iso"/> + + <!-- list of classes and packages that should to be compiled to native code + in the boot image. --> + <property name="jnode-core-class-list" value="${root.dir}/all/conf/core-classes.txt"/> + <property name="jnode-x86-class-list" value="${root.dir}/all/conf/x86-classes.txt"/> <path id="cp"> <pathelement location="${classlib.jar}"/> Added: trunk/all/conf/core-classes.txt =================================================================== --- trunk/all/conf/core-classes.txt (rev 0) +++ trunk/all/conf/core-classes.txt 2010-10-02 09:48:09 UTC (rev 5757) @@ -0,0 +1,191 @@ +# The classes and packages listed in this file will be compiled to optimized native code by +# the boot image builder. Entries can be a package name, a fully qualified class +# name or a fully qualified classname with a trailing wildcard in the classname part. + +java.io.Data* +java.io.String* +java.io.ByteArray* +java.io.CharArray* +java.io.Print* +java.io.Reader +java.io.Input* +java.io.Buffered* +java.io.Writer +java.io.Output* +java.io.Filter* +java.io.IOException +java.io.ObjectStreamField +java.io.ObjectStreamClass + +java.lang +java.lang.ref +//java.lang.reflect //<- produces inconsistent bootimage + +java.net.URL + +java.nio.Buffer +java.nio.ByteBuffer* +java.nio.DirectByteBuffer* +java.nio.ByteOrder +java.nio.Char* +java.nio.charset.spi +java.nio.charset + +java.security.ProtectionDomain +java.security.AccessController +java.security.AccessControlContext +java.security.AccessControlException +java.security.Permission +java.security.PrivilegedAction +java.security.PrivilegedActionException +java.security.PrivilegedExceptionAction +java.security.PermissionCollection +java.security.CodeSource +java.security.Policy +java.security.AllPermission +java.security.Permissions +java.security.Security +java.security.SecurityPermission +java.security.BasicPermission + +java.util.Collection* +java.util.Map* +java.util.List* +java.util.Set* +java.util.Iterator* +java.util.Array* +java.util.Abstract* +java.util.Hash* +java.util.TreeMap* +java.util.TreeSet* +java.util.Linked* +java.util.Vector* +java.util.Locale* +java.util.WeakHashMap* +java.util.Properties* +java.util.Dictionary* +java.util.StringTokenizer* +java.util.Property* +java.util.Enum* + +java.util.jar +java.util.zip + +gnu.classpath + +org.jnode.assembler +org.jnode.boot +org.jnode.bootlog +org.jnode.naming +org.jnode.permission +org.jnode.plugin +org.jnode.plugin.manager +org.jnode.plugin.model +org.jnode.security +org.jnode.system.resource +org.jnode.system.event +org.jnode.util +org.jnode.vm +org.jnode.vm.bytecode +org.jnode.vm.classmgr +org.jnode.vm.compiler +org.jnode.vm.facade +org.jnode.vm.isolate +org.jnode.vm.objects +org.jnode.vm.scheduler + +org.jnode.vm.memmgr +org.jnode.vm.memmgr.def + +//org.jnode.vm.memmgr.mmtk +//org.jnode.vm.memmgr.mmtk.genrc +//org.jnode.vm.memmgr.mmtk.nogc +//org.jnode.vm.memmgr.mmtk.ms + +//todo review for boot image size reduction +//sun.misc +//sun.reflect <-- // this kills jnode while booting, maybe Reflection static{...} +//sun.reflect.annotation +//sun.reflect.generics +//sun.reflect.generics.factory +//sun.reflect.generics.parser +//sun.reflect.generics.reflectiveObjects +//sun.reflect.generics.repository +//sun.reflect.generics.scope +//sun.reflect.generics.tree +//sun.reflect.generics.visitor +//sun.reflect.misc +sun.misc.VM +sun.nio +sun.nio.cs.US_ASCII +sun.nio.cs.ISO_8859_1* +sun.nio.cs.Surrogate* +sun.nio.cs.StreamEncoder +sun.nio.cs.SingleByteDecoder +sun.nio.cs.SingleByteEncoder +sun.nio.cs.FastCharsetProvider +sun.nio.cs.StandardCharsets +sun.nio.cs.HistoricallyNamedCharset +sun.nio.cs.StreamDecoder +sun.nio.cs.ThreadLocalCoders +sun.nio.cs.Unicode* +sun.nio.cs.UTF* + +// org.mmtk.plan +// org.mmtk.policy +// org.mmtk.utility +// org.mmtk.utility.alloc +// org.mmtk.utility.deque +// org.mmtk.utility.gcspy +// org.mmtk.utility.gcspy.drivers +// org.mmtk.utility.heap +// org.mmtk.utility.options +// org.mmtk.utility.scan +// org.mmtk.utility.statistics +// org.mmtk.vm +// org.mmtk.vm.gcspy +// +// java.awt +// java.awt.event +// java.awt.peer +// java.awt.font +// java.awt.geom +// +// gnu.javax.swing.text.html.parser +// gnu.javax.swing.text.html.parser.models +// gnu.javax.swing.text.html.parser.support +// gnu.javax.swing.text.html.parser.support.low +// +// javax.swing +// javax.swing.border +// javax.swing.event +// javax.swing.plaf +// javax.swing.plaf.basic +// javax.swing.plaf.metal +// javax.swing.text +// javax.swing.text.html +// javax.swing.text.html.parser +// javax.swing.text.rtf +// javax.swing.table +// javax.swing.tree +// javax.swing.colorchooser +// javax.swing.filechooser +// javax.swing.undo +// +// org.jnode.awt +// org.jnode.awt.swingpeers +// +// gnu.java.locale +// +// javax.net +// javax.net.ssl +// +// javax.security +// javax.security.auth +// javax.security.auth.callback +// javax.security.auth.login +// javax.security.auth.spi +// javax.security.cert +// javax.security.sasl +// +// org.ietf.jgss Added: trunk/all/conf/x86-classes.txt =================================================================== --- trunk/all/conf/x86-classes.txt (rev 0) +++ trunk/all/conf/x86-classes.txt 2010-10-02 09:48:09 UTC (rev 5757) @@ -0,0 +1,10 @@ +# The classes and packages listed in this file will be compiled to optimized native code by +# the boot image builder. Entries can be a package name, a fully qualified class +# name or a fully qualified classname with a trailing wildcard in the classname part. +# +# This file supplements core-classes.txt with classes / packages that are specific +# to the x86 architecture + +org.jnode.assembler.x86 +org.jnode.system.x86 +org.jnode.vm.x86 Modified: trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java =================================================================== --- trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2010-07-11 14:27:38 UTC (rev 5756) +++ trunk/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2010-10-02 09:48:09 UTC (rev 5757) @@ -20,8 +20,10 @@ package org.jnode.build; +import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; +import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; @@ -36,6 +38,7 @@ import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.SortedMap; @@ -83,7 +86,6 @@ import org.jnode.vm.classmgr.VmType; import org.jnode.vm.compiler.NativeCodeCompiler; import org.jnode.vm.facade.Vm; -import org.jnode.vm.facade.VmArchitecture; import org.jnode.vm.facade.VmUtils; import org.jnode.vm.memmgr.HeapHelper; import org.jnode.vm.memmgr.VmHeapManager; @@ -119,7 +121,7 @@ private static final String zero16 = zero8 + zero8; /** - * Set of jbects that should not yet be emitted. + * Set of objects that should not yet be emitted. */ private final Set<Object> blockedObjects = new HashSet<Object>(); @@ -147,6 +149,8 @@ private File listFile; + private File coreClassListFile; + private int totalHighMethods; private int totalHighMethodSize; @@ -1372,204 +1376,63 @@ public void setListFile(File listFile) { this.listFile = listFile; } + + /** + * Sets the core class list file. + * + * @param coreClassListFile The coreClassListFile to set + */ + public void setCoreClassListFile(File coreClassListFile) { + this.coreClassListFile = coreClassListFile; + } protected void setupCompileHighOptLevelPackages() { - addCompileHighOptLevel("java.io.Data*"); - addCompileHighOptLevel("java.io.String*"); - addCompileHighOptLevel("java.io.ByteArray*"); - addCompileHighOptLevel("java.io.CharArray*"); - addCompileHighOptLevel("java.io.Print*"); - addCompileHighOptLevel("java.io.Reader"); - addCompileHighOptLevel("java.io.Input*"); - addCompileHighOptLevel("java.io.Buffered*"); - addCompileHighOptLevel("java.io.Writer"); - addCompileHighOptLevel("java.io.Output*"); - addCompileHighOptLevel("java.io.Filter*"); - addCompileHighOptLevel("java.io.IOException"); - addCompileHighOptLevel("java.io.ObjectStreamField"); - addCompileHighOptLevel("java.io.ObjectStreamClass"); - - addCompileHighOptLevel("java.lang"); - addCompileHighOptLevel("java.lang.ref"); -// addCompileHighOptLevel("java.lang.reflect"); //<- produces inconsistent bootimage - - addCompileHighOptLevel("java.net.URL"); - - addCompileHighOptLevel("java.nio.Buffer"); - addCompileHighOptLevel("java.nio.ByteBuffer*"); - addCompileHighOptLevel("java.nio.DirectByteBuffer*"); - addCompileHighOptLevel("java.nio.ByteOrder"); - addCompileHighOptLevel("java.nio.Char*"); - addCompileHighOptLevel("java.nio.charset.spi"); - addCompileHighOptLevel("java.nio.charset"); - - addCompileHighOptLevel("java.security.ProtectionDomain"); - addCompileHighOptLevel("java.security.AccessController"); - addCompileHighOptLevel("java.security.AccessControlContext"); - addCompileHighOptLevel("java.security.AccessControlException"); - addCompileHighOptLevel("java.security.Permission"); - addCompileHighOptLevel("java.security.PrivilegedAction"); - addCompileHighOptLevel("java.security.PrivilegedActionException"); - addCompileHighOptLevel("java.security.PrivilegedExceptionAction"); - addCompileHighOptLevel("java.security.PermissionCollection"); - addCompileHighOptLevel("java.security.CodeSource"); - addCompileHighOptLevel("java.security.Policy"); - addCompileHighOptLevel("java.security.AllPermission"); - addCompileHighOptLevel("java.security.Permissions"); - addCompileHighOptLevel("java.security.Security"); - addCompileHighOptLevel("java.security.SecurityPermission"); - addCompileHighOptLevel("java.security.BasicPermission"); - - addCompileHighOptLevel("java.util.Collection*"); - addCompileHighOptLevel("java.util.Map*"); - addCompileHighOptLevel("java.util.List*"); - addCompileHighOptLevel("java.util.Set*"); - addCompileHighOptLevel("java.util.Iterator*"); - addCompileHighOptLevel("java.util.Array*"); - addCompileHighOptLevel("java.util.Abstract*"); - addCompileHighOptLevel("java.util.Hash*"); - addCompileHighOptLevel("java.util.TreeMap*"); - addCompileHighOptLevel("java.util.TreeSet*"); - addCompileHighOptLevel("java.util.Linked*"); - addCompileHighOptLevel("java.util.Vector*"); - addCompileHighOptLevel("java.util.Locale*"); - addCompileHighOptLevel("java.util.WeakHashMap*"); - addCompileHighOptLevel("java.util.Properties*"); - addCompileHighOptLevel("java.util.Dictionary*"); - addCompileHighOptLevel("java.util.StringTokenizer*"); - addCompileHighOptLevel("java.util.Property*"); - addCompileHighOptLevel("java.util.Enum*"); - - addCompileHighOptLevel("java.util.jar"); - addCompileHighOptLevel("java.util.zip"); - - addCompileHighOptLevel("gnu.classpath"); - - addCompileHighOptLevel("org.jnode.assembler"); - addCompileHighOptLevel("org.jnode.boot"); - addCompileHighOptLevel("org.jnode.bootlog"); - addCompileHighOptLevel("org.jnode.naming"); - addCompileHighOptLevel("org.jnode.permission"); - addCompileHighOptLevel("org.jnode.plugin"); - addCompileHighOptLevel("org.jnode.plugin.manager"); - addCompileHighOptLevel("org.jnode.plugin.model"); - addCompileHighOptLevel("org.jnode.security"); - addCompileHighOptLevel("org.jnode.system.resource"); - addCompileHighOptLevel("org.jnode.system.event"); - addCompileHighOptLevel("org.jnode.util"); - addCompileHighOptLevel("org.jnode.vm"); - addCompileHighOptLevel("org.jnode.vm.bytecode"); - addCompileHighOptLevel("org.jnode.vm.classmgr"); - addCompileHighOptLevel("org.jnode.vm.compiler"); - addCompileHighOptLevel("org.jnode.vm.facade"); - addCompileHighOptLevel("org.jnode.vm.isolate"); - addCompileHighOptLevel("org.jnode.vm.objects"); - addCompileHighOptLevel("org.jnode.vm.scheduler"); + addCompileHighOptLevel(loadClassList(coreClassListFile)); for (NativeCodeCompiler compiler : getArchitecture().getCompilers()) { for (String packageName : compiler.getCompilerPackages()) { addCompileHighOptLevel(packageName); } } - - addCompileHighOptLevel("org.jnode.vm.memmgr"); - addCompileHighOptLevel("org.jnode.vm.memmgr.def"); -// addCompileHighOptLevel("org.jnode.vm.memmgr.mmtk"); -// addCompileHighOptLevel("org.jnode.vm.memmgr.mmtk.genrc"); -// addCompileHighOptLevel("org.jnode.vm.memmgr.mmtk.nogc"); -// addCompileHighOptLevel("org.jnode.vm.memmgr.mmtk.ms"); - - //todo review for boot image size reduction -// addCompileHighOptLevel("sun.misc"); -// addCompileHighOptLevel("sun.reflect"); <-- // this kills jnode while booting, maybe Reflection static{...} -// addCompileHighOptLevel("sun.reflect.annotation"); -// addCompileHighOptLevel("sun.reflect.generics"); -// addCompileHighOptLevel("sun.reflect.generics.factory"); -// addCompileHighOptLevel("sun.reflect.generics.parser"); -// addCompileHighOptLevel("sun.reflect.generics.reflectiveObjects"); -// addCompileHighOptLevel("sun.reflect.generics.repository"); -// addCompileHighOptLevel("sun.reflect.generics.scope"); -// addCompileHighOptLevel("sun.reflect.generics.tree"); -// addCompileHighOptLevel("sun.reflect.generics.visitor"); -// addCompileHighOptLevel("sun.reflect.misc"); - addCompileHighOptLevel("sun.misc.VM"); - addCompileHighOptLevel("sun.nio"); - addCompileHighOptLevel("sun.nio.cs.US_ASCII"); - addCompileHighOptLevel("sun.nio.cs.ISO_8859_1*"); - addCompileHighOptLevel("sun.nio.cs.Surrogate*"); - addCompileHighOptLevel("sun.nio.cs.StreamEncoder"); - addCompileHighOptLevel("sun.nio.cs.SingleByteDecoder"); - addCompileHighOptLevel("sun.nio.cs.SingleByteEncoder"); - addCompileHighOptLevel("sun.nio.cs.FastCharsetProvider"); - addCompileHighOptLevel("sun.nio.cs.StandardCharsets"); - addCompileHighOptLevel("sun.nio.cs.HistoricallyNamedCharset"); - addCompileHighOptLevel("sun.nio.cs.StreamDecoder"); - addCompileHighOptLevel("sun.nio.cs.ThreadLocalCoders"); - addCompileHighOptLevel("sun.nio.cs.Unicode*"); - addCompileHighOptLevel("sun.nio.cs.UTF*"); - - if (false) { - addCompileHighOptLevel("org.mmtk.plan"); - addCompileHighOptLevel("org.mmtk.policy"); - addCompileHighOptLevel("org.mmtk.utility"); - addCompileHighOptLevel("org.mmtk.utility.alloc"); - addCompileHighOptLevel("org.mmtk.utility.deque"); - addCompileHighOptLevel("org.mmtk.utility.gcspy"); - addCompileHighOptLevel("org.mmtk.utility.gcspy.drivers"); - addCompileHighOptLevel("org.mmtk.utility.heap"); - addCompileHighOptLevel("org.mmtk.utility.options"); - addCompileHighOptLevel("org.mmtk.utility.scan"); - addCompileHighOptLevel("org.mmtk.utility.statistics"); - addCompileHighOptLevel("org.mmtk.vm"); - addCompileHighOptLevel("org.mmtk.vm.gcspy"); - - addCompileHighOptLevel("java.awt"); - addCompileHighOptLevel("java.awt.event"); - addCompileHighOptLevel("java.awt.peer"); - addCompileHighOptLevel("java.awt.font"); - addCompileHighOptLevel("java.awt.geom"); - - addCompileHighOptLevel("gnu.javax.swing.text.html.parser"); - addCompileHighOptLevel("gnu.javax.swing.text.html.parser.models"); - addCompileHighOptLevel("gnu.javax.swing.text.html.parser.support"); - addCompileHighOptLevel("gnu.javax.swing.text.html.parser.support.low"); - - addCompileHighOptLevel("javax.swing"); - addCompileHighOptLevel("javax.swing.border"); - addCompileHighOptLevel("javax.swing.event"); - addCompileHighOptLevel("javax.swing.plaf"); - addCompileHighOptLevel("javax.swing.plaf.basic"); - addCompileHighOptLevel("javax.swing.plaf.metal"); - addCompileHighOptLevel("javax.swing.text"); - addCompileHighOptLevel("javax.swing.text.html"); - addCompileHighOptLevel("javax.swing.text.html.parser"); - addCompileHighOptLevel("javax.swing.text.rtf"); - addCompileHighOptLevel("javax.swing.table"); - addCompileHighOptLevel("javax.swing.tree"); - addCompileHighOptLevel("javax.swing.colorchooser"); - addCompileHighOptLevel("javax.swing.filechooser"); - addCompileHighOptLevel("javax.swing.undo"); - - addCompileHighOptLevel("org.jnode.awt"); - addCompileHighOptLevel("org.jnode.awt.swingpeers"); - - addCompileHighOptLevel("gnu.java.locale"); - - addCompileHighOptLevel("javax.net"); - addCompileHighOptLevel("javax.net.ssl"); - - addCompileHighOptLevel("javax.security"); - addCompileHighOptLevel("javax.security.auth"); - addCompileHighOptLevel("javax.security.auth.callback"); - addCompileHighOptLevel("javax.security.auth.login"); - addCompileHighOptLevel("javax.security.auth.spi"); - addCompileHighOptLevel("javax.security.cert"); - addCompileHighOptLevel("javax.security.sasl"); - - addCompileHighOptLevel("org.ietf.jgss"); - - } } + + protected void addCompileHighOptLevel(List<String> classNames) { + for (String className : classNames) { + addCompileHighOptLevel(className); + } + } + protected List<String> loadClassList(File file) { + ArrayList<String> classNames = new ArrayList<String>(); + FileReader fr; + try { + fr = new FileReader(file); + } catch (IOException ex) { + throw new BuildException("Cannot open '" + file + "'", ex); + } + try { + BufferedReader br = new BufferedReader(fr); + String line; + while ((line = br.readLine()) != null) { + line = line.trim(); + if (line.isEmpty() || line.startsWith("#") || line.startsWith("/")) { + continue; + } + classNames.add(line); + } + } catch (IOException ex) { + throw new BuildException("Error reading '" + file + "'", ex); + } finally { + try { + fr.close(); + } catch (IOException ex) { + // ignore + } + } + return classNames; + } + + + /** * Create a set of the names of those classes that can be safely * instantiated during the boot process (and written as instance to the boot Modified: trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java =================================================================== --- trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java 2010-07-11 14:27:38 UTC (rev 5756) +++ trunk/builder/src/builder/org/jnode/build/x86/BootImageBuilder.java 2010-10-02 09:48:09 UTC (rev 5757) @@ -20,6 +20,7 @@ package org.jnode.build.x86; +import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; @@ -83,6 +84,8 @@ public static final int INITIAL_OBJREFS_CAPACITY = 750000; public static final int INITIAL_SIZE = 64 * 1024 * 1024; + + private File archClassListFile; private VmX86Processor processor; @@ -690,13 +693,13 @@ } /** + * Include x86 class files. + * * @see org.jnode.build.AbstractBootImageBuilder#setupCompileHighOptLevelPackages() */ protected void setupCompileHighOptLevelPackages() { super.setupCompileHighOptLevelPackages(); - addCompileHighOptLevel("org.jnode.assembler.x86"); - addCompileHighOptLevel("org.jnode.system.x86"); - addCompileHighOptLevel("org.jnode.vm.x86"); + addCompileHighOptLevel(loadClassList(archClassListFile)); } /** @@ -764,4 +767,22 @@ throw new BuildException(e); } } + + /** + * Gets the architecture specific class list file. + * + * @return The archClassListFile to set + */ + public File getArchClassListFile() { + return archClassListFile; + } + + /** + * Sets the architecture specific class list file. + * + * @param archClassListFile The archClassListFile to set + */ + public void setArchClassListFile(File archClassListFile) { + this.archClassListFile = archClassListFile; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |